FocusBox MCP — référence des outils
URL du connecteur : https://focusbox.io/mcp/api. Voir /mcp pour la configuration.
list_today
Retourne les tâches de l'utilisateur planifiées pour aujourd'hui (uniquement les non terminées).
Arguments
Aucun.
Retourne
Tableau de { taskId, name, durationSeconds, projectId }.
Exemple de réponse
[
{ "taskId": "abc", "name": "Write spec", "durationSeconds": 1500, "projectId": "mytasks" }
]
next_task
Retourne une seule tâche à commencer, choisie selon ce qui tient dans le temps disponible avant le prochain événement de l'agenda, ce qui a été reporté des jours précédents et ce qui est assez court pour être commencé. Inclut la raison, deux alternatives et un lien pour démarrer.
Arguments
availableMinutes (1-480, optionnel).
Retourne
{ task, alternatives, freeWindowMinutes, busyNow, message }.
Exemple de réponse
{
"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
Liste les projets FocusBox de l'utilisateur (conteneurs de tâches ; appelés « streams » dans l'API pour des raisons historiques). Les projets archivés et les buckets today/mytasks sont exclus.
Arguments
Aucun.
Retourne
Tableau de { streamId, name }.
add_task
Ajoute une nouvelle tâche à un projet ou la planifie pour aujourd'hui. La durée par défaut est de 25 minutes.
Arguments
| Champ | Type | Requis | Description |
|---|---|---|---|
streamId | string | requis | ID du projet cible obtenu via get_streams. Utilisez "today" (ou "mytasks") pour aujourd'hui. |
name | string | requis | Titre de la tâche (1-500 caractères). |
durationSeconds | number | optionnel | 60-14400 (1 min — 4 h). Par défaut 1500. |
dueDate | string | optionnel | Horodatage Unix-seconds optionnel indiquant quand la tâche est planifiée. La vue Today affiche les tâches dont la due tombe dans la fenêtre du jour selon le fuseau horaire de l'utilisateur. |
clientRequestId | string | optionnel | Clé d'idempotence. La même clé sous 5 minutes retourne le résultat mis en cache. |
Retourne
{ taskId, streamId, name, durationSeconds }.
update_task
Met à jour un ou plusieurs champs d'une tâche existante : name, durationSeconds ou dueDate.
Arguments
| Champ | Type | Requis | Description |
|---|---|---|---|
streamId | string | requis | Stream id obtenu via get_streams. Utilisez "today" ou "mytasks" pour la boîte de réception. |
taskId | string | requis | Task id obtenu via list_today ou get_streams. |
name | string | optionnel | Nouveau titre de la tâche (1-500 caractères). |
durationSeconds | number | optionnel | Nouvelle durée en secondes (60-14400). Réinitialise durSecInit à la nouvelle valeur. |
dueDate | number | optionnel | Nouvelle date d'échéance sous forme d'horodatage Unix-seconds. |
clientRequestId | string | optionnel | Clé d'idempotence. La même clé sous 5 minutes retourne le résultat mis en cache. |
Retourne
{ taskId, streamId, name, durationSeconds, dueDate }.
delete_task
Supprime définitivement une tâche. Idempotent : supprimer une tâche déjà supprimée n'est pas une erreur.
Arguments
| Champ | Type | Requis |
|---|---|---|
streamId | string | requis |
taskId | string | requis |
Retourne
{ taskId, streamId, deleted, reason? }.
complete_task
Marque une tâche FocusBox comme terminée.
Arguments
| Champ | Type | Requis |
|---|---|---|
streamId | string | requis |
taskId | string | requis |
Retourne
{ taskId, streamId, completed: true }.
get_insights_30d
Résumé agrégé des tâches terminées par l'utilisateur sur les 30 derniers jours.
Arguments
Aucun.
Retourne
{ totalTasks, totalFocusMinutes, topStreams[{streamId, name, tasks}, days: 30 }].
Authentification
OAuth (recommandé pour Claude)
Claude Desktop et claude.ai sur le web complètent le flux OAuth automatiquement. Aucune gestion d'API key n'est nécessaire.
Bearer (Cursor, Inspector, clients personnalisés)
Récupérez votre API key sur /account/api-keys (commence par apikey_). Envoyez-la sous Authorization: Bearer apikey_xxx à chaque requête.
Limites de débit
300 appels d'outils par tranche de 2 minutes par API key. 60 sondes non authentifiées par tranche de 2 minutes par IP.
FAQ
Authentification : OAuth ou Bearer ?
Les deux. Utilisez OAuth (géré automatiquement par Claude Desktop et claude.ai sur le web) pour la configuration la plus simple. Pour Cursor, MCP Inspector ou tout client personnalisé, utilisez l'authentification Bearer avec apikey_<uuid> depuis /account/api-keys.
Quelles sont les limites de débit ?
300 appels d'outils par tranche de 2 minutes par API key. 60 sondes non authentifiées par tranche de 2 minutes par IP. Tout dépassement retourne un HTTP 429 avec un en-tête Retry-After.
Combien de temps les jetons OAuth restent-ils valides ?
30 jours à compter de leur émission. Passé ce délai, Claude déclenche une ré-autorisation automatiquement. Le jeton est opaque (at_*) et stocké côté serveur ; aucun refresh token n'est nécessaire.
Pourquoi ma session Claude se reconnecte-t-elle après un déploiement ?
La table de sessions MCP est en mémoire dans une seule ECS task. Un rolling deploy la réinitialise. Claude se reconnecte automatiquement et reprend ; vous ne devriez constater aucune interruption visible au-delà d'un bref rechargement.
Puis-je utiliser des réponses en streaming (SSE) ?
Oui. Le transport est la variante streamable HTTP de la spécification MCP, donc chaque appel d'outil peut diffuser des événements de progression avant le résultat final. Les sessions sont maintenues actives via des trames ping périodiques.
