API et serveur MCP

Scrumbo propose une API REST JSON et un serveur Model Context Protocol (MCP), afin que vous (ou un assistant IA comme Claude) puissiez lire et gérer boards et stories en dehors de l'application web.

Authentification

Chaque requête nécessite une clé API personnelle. Créez-en une sur votre page de compte — elle n'est affichée qu'une fois, copiez-la donc immédiatement.

Envoyez-la comme jeton bearer à chaque requête :

Authorization: Bearer sbo_your_key_here
API REST

L'API est disponible à https://scrumbo.com/api/v1 et renvoie du JSON. Une clé a exactement vos droits d'accès : elle n'atteint que les projets et boards dont vous êtes propriétaire, membre ou administrateur.

Méthode Chemin Description Accès requis
GET/projectsLister les projets auxquels vous avez accèsToute clé
GET/projects/:token/boardsLister les boards d'un projetViewer
GET/boards/:boardidRécupérer un board avec ses statuts et ses storiesViewer
GET/boards/:boardid/statusesLister les statuts d'un boardViewer
GET/boards/:boardid/storiesLister les stories d'un board, éventuellement filtrées par statut ou assignéViewer
GET/boards/:boardid/stories/:storyidRécupérer une storyViewer
POST/boards/:boardid/storiesCréer une storyEditor
PATCH/boards/:boardid/stories/:storyidMettre à jour les champs d'une storyEditor
POST/boards/:boardid/stories/:storyid/statusChanger le statut d'une storyEditor ou contributor
DELETE/boards/:boardid/stories/:storyidSupprimer une storyEditor
POST/boards/:boardid/stories/:storyid/commentsAjouter un commentaire à une storyCommenter
Compte, facturation et factures
GET/accountRécupérer votre compte : plan, limites d'utilisation du plan gratuit et coordonnées de facturationToute clé
GET/invoicesLister vos facturesToute clé
GET/invoices/:invoiceid · …/pdfRécupérer le détail d'une facture, ou la télécharger en PDFToute clé
Banque d'heures
GET/projects/:token/hourbank · …/transactionsRécupérer les paramètres et le solde actuel de la banque d'heures d'un projet, ou son journal de transactionsViewer
POST…/hourbank/settings · …/entriesConfigurer la banque d'heures d'un projet, ou y ajouter un achat/ajustementPropriétaire du projet
Équipe
GET/teamLister votre équipe interne sur tous vos projets et feature boardsToute clé
Feature boards
GET/featureboardsLister les feature boards dont vous êtes membreMembre du board
POST/featureboardsCréer un feature boardPlan payant
GET/featureboards/:boardidRécupérer un feature board avec ses features, votes, commentaires et membresMembre du board
POST…/features · …/vote · …/commentsSoumettre une feature request, voter pour l'une d'elles, ou ajouter un commentaireMembre du board
PATCH POST DELETE…/features/:featureid · …/statusMettre à jour, définir le statut, ou supprimer une feature requestAdministrateur du board
DELETE…/comments/:commentidSupprimer un commentaire de feature requestAuteur du commentaire ou administrateur du board
POST DELETE/featureboards/:boardid/members · …/:userid/admin · …/:userid/externalAjouter, promouvoir/rétrograder, reclasser ou retirer un membre du boardAdministrateur du board

« Editor ou contributor » couvre aussi les developers, qui peuvent changer le statut mais pas modifier le texte de la story.

Exemple :

curl https://scrumbo.com/api/v1/boards/123/stories \
  -H "Authorization: Bearer sbo_your_key_here"

curl -X POST https://scrumbo.com/api/v1/boards/123/stories \
  -H "Authorization: Bearer sbo_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"subject": "New story", "story": "Details go here"}'
Paramètres

Les corps de requête sont en JSON. Chaque paramètre ci-dessous est accepté aussi bien par l'API REST que par l'outil MCP correspondant.

Paramètres de chemin
NomTypeObligatoireDescription
:token string Oui Jeton du projet, tel que renvoyé par GET /projects.
:boardid integer Oui Identifiant numérique du board, tel que renvoyé par GET /projects/:token/boards.
:storyid integer Oui Identifiant numérique de la story, unique au sein de son board.
Paramètres de requête

GET /boards/:boardid/stories

NomTypeObligatoireDescription
status string Non Ne renvoie que les stories dans ce statut. La casse est ignorée lors du filtrage.
assigned string Non Ne renvoie que les stories portant ce nom d'assigné. La casse est ignorée lors du filtrage.
Champs d'une story (création et mise à jour)

POST /boards/:boardid/stories · PATCH /boards/:boardid/stories/:storyid

NomTypeObligatoireDescription
subject string À la création Titre court, 500 caractères maximum. Obligatoire à la création ; les valeurs plus longues sont rejetées.
story string Non Corps de la story. Le HTML est autorisé mais nettoyé côté serveur : les balises et attributs non pris en charge sont supprimés.
status string Non Doit correspondre exactement à l'un des statuts du projet, casse comprise. À la création, un statut inconnu ou absent bascule sur le premier statut du board ; à la mise à jour, un statut inconnu est rejeté.
assigned string Non Nom de l'assigné, texte libre. Ce n'est qu'une étiquette : cela ne relie pas la story à un compte Scrumbo.
requester string Non Nom de la personne à l'origine de la demande, texte libre.
scope string Non Étiquette de périmètre courte, 100 caractères maximum. Les valeurs plus longues sont rejetées.
comment string Non Ancien champ de texte libre stocké sur la story elle-même. Il n'apparaît pas dans l'interface web — pour ajouter un commentaire visible, utilisez le point de terminaison des commentaires ci-dessous.
notify boolean Non Envoie un e-mail aux abonnés du board et de la story à propos de cette modification. Faux par défaut.
  • Tout champ absent de cette liste est ignoré plutôt que rejeté.
  • Une mise à jour doit fournir au moins un de ces champs ; seuls les champs envoyés sont modifiés.
  • Relier une story à un compte Scrumbo (le sélecteur d'assigné) n'est pas possible via l'API.
Déplacer une story

POST /boards/:boardid/stories/:storyid/status

NomTypeObligatoireDescription
status string Oui Statut cible. Doit correspondre exactement à l'un des statuts du projet, casse comprise.
notify boolean Non Envoie un e-mail aux abonnés du board et de la story à propos de cette modification. Faux par défaut.
Ajouter un commentaire

POST /boards/:boardid/stories/:storyid/comments

NomTypeObligatoireDescription
comment string Oui Texte du commentaire, en texte brut. Il est échappé avant stockage : le HTML s'affiche littéralement au lieu d'être interprété.
name string Non Nom d'auteur affiché sur le commentaire. Par défaut, le nom du compte de la clé API.
notify boolean Non Envoie un e-mail aux abonnés du board et de la story à propos de cette modification. Faux par défaut.

Les requêtes rejetées renvoient le statut HTTP correspondant (400, 403 ou 404) et un corps JSON :

{"error": "subject must be at most 500 characters"}
Serveur MCP

Scrumbo fournit un serveur MCP autonome qui expose l'API REST sous forme d'outils, afin qu'un assistant compatible MCP comme Claude Desktop ou Claude Code puisse utiliser directement vos boards. Node.js 20 ou plus récent est requis.

Télécharger le serveur MCP (ZIP)

  1. Décompressez-le et installez ses dépendances une fois :
    unzip scrumbo-mcp.zip
    cd scrumbo-mcp
    npm install
  2. Créez une clé API sur votre page de compte et copiez-la.
  3. Enregistrez le serveur auprès de votre client MCP, par exemple :
{
  "mcpServers": {
    "scrumbo": {
      "command": "node",
      "args": ["/absolute/path/to/scrumbo-mcp/index.js"],
      "env": {
        "SCRUMBO_API_KEY": "sbo_your_key_here",
        "SCRUMBO_API_URL": "https://scrumbo.com/api/v1"
      }
    }
  }
}

Outils :

DescriptionAccès requis
list_projectsToute clé
list_boards, get_board, list_stories, get_story, list_statusesViewer
add_commentCommenter
create_story, update_story, move_story, delete_storyEditor
get_account, list_invoices, get_invoice, get_invoice_pdf, get_teamToute clé
get_hourbank, list_hourbank_transactionsViewer
save_hourbank_settings, add_hourbank_entryPropriétaire du projet
list_feature_boards, get_feature_board, create_feature, vote_feature, add_feature_commentMembre du board
create_feature_boardPlan payant
update_feature, set_feature_status, delete_feature, add_feature_board_member, set_feature_board_member_admin, set_feature_board_member_external, remove_feature_board_memberAdministrateur du board
delete_feature_commentAuteur du commentaire ou administrateur du board
À retenir
  • Une clé a exactement vos droits d'accès — quiconque la détient peut agir en votre nom dans ce périmètre, traitez-la donc comme un mot de passe.
  • Révoquez une clé à tout moment depuis votre page de compte ; tout ce qui l'utilise cesse alors immédiatement de fonctionner.
  • Le serveur MCP lui-même n'a aucun accès à la base de données — c'est un client HTTP léger qui n'a jamais plus de droits que la clé que vous lui fournissez.