Skip to main content
Glama
nickdesi

FFBB MCP Server

by nickdesi

Bilan complet toutes phases

ffbb_bilan
Read-onlyIdempotent

Get a complete record for any basketball team in one call: wins, losses, draws, points, and phases. Provide a club name or FFBB ID to see full results and standings.

Instructions

Bilan complet d'une équipe toutes phases confondues en UN seul appel (V/D/N, paniers, phases).

Outil prioritaire pour 'quel est le bilan de X ?' ou 'résultats de U11M1'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categorieNoCatégorie/genre/numéro (ex: 'U11M1', 'Senior').
club_nameNoNom du club (ex: 'Stade Clermontois', 'ASVEL').
organisme_idNoID FFBB du club (ex: 9326).
force_refreshNoSi True, contourne le cache.
numero_equipeNoNuméro d'équipe (ex: 1, 2).

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed6 schema fields changedv1.9.0
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "club_name"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "organisme_id"
      +    ]
      +  }
      +]
    • changedInput schema / properties / categorie / description
      Previous value: -"Catégorie + genre + numéro d'équipe (ex: 'U11M1', 'U13F2', 'U15M', 'Senior')."New value: +"Catégorie/genre/numéro (ex: 'U11M1', 'Senior')."
    • changedInput schema / properties / force_refresh / description
      Previous value: -"Si True, contourne le cache pour récupérer des données fraîches."New value: +"Si True, contourne le cache."
    • changedInput schema / properties / numero_equipe / description
      Previous value: -"Numéro d'équipe facultatif (ex: 1, 2)."New value: +"Numéro d'équipe (ex: 1, 2)."
    • changedInput schema / properties / organisme_id / description
      Previous value: -"ID FFBB du club (alternative plus rapide à club_name)."New value: +"ID FFBB du club (ex: 9326)."
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "BilanResponse": {
      -      "description": "Réponse structurée et typée pour le bilan d'une équipe.",
      -      "properties": {
      -        "_meta": {
      -          "additionalProperties": true,
      -          "description": "Métadonnées de fraîcheur et de cache.",
      -          "title": "Meta",
      -          "type": "object"
      -        },
      -        "bilan_total": {
      -          "$ref": "#/$defs/BilanTotal",
      -          "description": "Totaux cumulés toutes phases."
      -        },
      -        "categorie": {
      -          "description": "Catégorie d'âge/genre.",
      -          "title": "Categorie",
      -          "type": "string"
      -        },
      -        "club": {
      -          "description": "Nom officiel du club.",
      -          "title": "Club",
      -          "type": "string"
      -        },
      -        "competitions_incluses": {
      -          "description": "Liste des noms de compétitions incluses dans le bilan.",
      -          "items": {
      -            "type": "string"
      -          },
      -          "title": "Competitions Incluses",
      -          "type": "array"
      -        },
      -        "dynamique": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/FormeRecente"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Dynamique et forme récente de l'équipe principale sur les 5 derniers matchs."
      -        },
      -        "equipes_bilan": {
      -          "additionalProperties": true,
      -          "description": "Bilans ventilés par numéro d'équipe.",
      -          "title": "Equipes Bilan",
      -          "type": "object"
      -        },
      -        "phase_courante": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/PhaseBilan"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Détails de la dernière phase en cours."
      -        },
      -        "phases": {
      -          "description": "Liste de toutes les phases jouées.",
      -          "items": {
      -            "$ref": "#/$defs/PhaseBilan"
      -          },
      -          "title": "Phases",
      -          "type": "array"
      -        },
      -        "profil_avance": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Profil tactique avancé : rangs attaque/défense, style de jeu, clutch index et bilans domicile/extérieur.",
      -          "title": "Profil Avance"
      -        },
      -        "saison_terminee": {
      -          "default": true,
      -          "description": "Indique si la saison est terminée pour cette équipe (toutes les phases jouées).",
      -          "title": "Saison Terminee",
      -          "type": "boolean"
      -        }
      -      },
      -      "required": [
      -        "club",
      -        "categorie",
      -        "bilan_total"
      -      ],
      -      "title": "BilanResponse",
      -      "type": "object"
      -    },
      -    "BilanTotal": {
      -      "description": "Statistiques cumulées d'une équipe (victoires, défaites, paniers).",
      -      "properties": {
      -        "difference": {
      -          "default": 0,
      -          "description": "Différence de paniers (marqués - encaissés).",
      -          "title": "Difference",
      -          "type": "integer"
      -        },
      -        "gagnes": {
      -          "default": 0,
      -          "description": "Nombre de matchs gagnés.",
      -          "title": "Gagnes",
      -          "type": "integer"
      -        },
      -        "match_joues": {
      -          "default": 0,
      -          "description": "Nombre de matchs joués.",
      -          "title": "Match Joues",
      -          "type": "integer"
      -        },
      -        "nuls": {
      -          "default": 0,
      -          "description": "Nombre de matchs nuls.",
      -          "title": "Nuls",
      -          "type": "integer"
      -        },
      -        "paniers_encaisses": {
      -          "default": 0,
      -          "description": "Total des paniers encaissés.",
      -          "title": "Paniers Encaisses",
      -          "type": "integer"
      -        },
      -        "paniers_marques": {
      -          "default": 0,
      -          "description": "Total des paniers marqués.",
      -          "title": "Paniers Marques",
      -          "type": "integer"
      -        },
      -        "perdus": {
      -          "default": 0,
      -          "description": "Nombre de matchs perdus.",
      -          "title": "Perdus",
      -          "type": "integer"
      -        }
      -      },
      -      "title": "BilanTotal",
      -      "type": "object"
      -    },
      -    "FormeRecente": {
      -      "description": "Indicateur complet de dynamique et de forme récente (5 derniers matchs).",
      -      "properties": {
      -        "defaites_5_derniers": {
      -          "default": 0,
      -          "description": "Nombre de défaites sur les 5 derniers matchs.",
      -          "title": "Defaites 5 Derniers",
      -          "type": "integer"
      -        },
      -        "diff_moyenne_5": {
      -          "default": 0,
      -          "description": "Différentiel moyen de points sur les 5 derniers matchs.",
      -          "title": "Diff Moyenne 5",
      -          "type": "number"
      -        },
      -        "forme": {
      -          "description": "Résultats des 5 derniers matchs par ordre chronologique (ex: ['V', 'V', 'D', 'V', 'V']).",
      -          "items": {
      -            "type": "string"
      -          },
      -          "title": "Forme",
      -          "type": "array"
      -        },
      -        "forme_str": {
      -          "default": "",
      -          "description": "Représentation texte compacte de la forme (ex: 'V-V-D-V-V').",
      -          "title": "Forme Str",
      -          "type": "string"
      -        },
      -        "matchs": {
      -          "description": "Détail des matchs récents analysés.",
      -          "items": {
      -            "$ref": "#/$defs/MatchForme"
      -          },
      -          "title": "Matchs",
      -          "type": "array"
      -        },
      -        "meilleure_victoire": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Plus large victoire récente (ex: '+24 vs ASPTT (84-60)').",
      -          "title": "Meilleure Victoire"
      -        },
      -        "nuls_5_derniers": {
      -          "default": 0,
      -          "description": "Nombre de nuls sur les 5 derniers matchs.",
      -          "title": "Nuls 5 Derniers",
      -          "type": "integer"
      -        },
      -        "pire_defaite": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Plus lourde défaite récente (ex: '-12 vs US Chauriat (62-74)').",
      -          "title": "Pire Defaite"
      -        },
      -        "pts_encaisses_moyenne_5": {
      -          "default": 0,
      -          "description": "Moyenne de points encaissés par match sur les 5 derniers matchs.",
      -          "title": "Pts Encaisses Moyenne 5",
      -          "type": "number"
      -        },
      -        "pts_marques_moyenne_5": {
      -          "default": 0,
      -          "description": "Moyenne de points marqués par match sur les 5 derniers matchs.",
      -          "title": "Pts Marques Moyenne 5",
      -          "type": "number"
      -        },
      -        "ratio_victoires_5_derniers": {
      -          "default": 0,
      -          "description": "Pourcentage de victoires sur les 5 derniers matchs (0-100%).",
      -          "title": "Ratio Victoires 5 Derniers",
      -          "type": "number"
      -        },
      -        "serie_actuelle": {
      -          "$ref": "#/$defs/SerieEnCours",
      -          "description": "Série globale en cours toutes compétitions."
      -        },
      -        "serie_domicile": {
      -          "$ref": "#/$defs/SerieEnCours",
      -          "description": "Série en cours pour les matchs à domicile."
      -        },
      -        "serie_exterieur": {
      -          "$ref": "#/$defs/SerieEnCours",
      -          "description": "Série en cours pour les matchs à l'extérieur."
      -        },
      -        "tendance": {
      -          "default": "Stable ➡️",
      -          "description": "Tendance de la forme ('En hausse ↗️', 'Stable ➡️', 'En baisse ↘️').",
      -          "title": "Tendance",
      -          "type": "string"
      -        },
      -        "victoires_5_derniers": {
      -          "default": 0,
      -          "description": "Nombre de victoires sur les 5 derniers matchs.",
      -          "title": "Victoires 5 Derniers",
      -          "type": "integer"
      -        }
      -      },
      -      "title": "FormeRecente",
      -      "type": "object"
      -    },
      -    "MatchForme": {
      -      "description": "Détail d'un match pris en compte dans la forme récente.",
      -      "properties": {
      -        "adversaire": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Nom de l'adversaire.",
      -          "title": "Adversaire"
      -        },
      -        "date": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Date et heure du match.",
      -          "title": "Date"
      -        },
      -        "domicile": {
      -          "default": true,
      -          "description": "True si domicile, False si déplacement.",
      -          "title": "Domicile",
      -          "type": "boolean"
      -        },
      -        "ecart": {
      -          "default": 0,
      -          "description": "Différence de points (+13 ou -8).",
      -          "title": "Ecart",
      -          "type": "integer"
      -        },
      -        "journee": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Nom ou numéro de journée.",
      -          "title": "Journee"
      -        },
      -        "resultat": {
      -          "description": "'V' (Victoire), 'D' (Défaite) ou 'N' (Nul).",
      -          "title": "Resultat",
      -          "type": "string"
      -        },
      -        "salle": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Nom de la salle.",
      -          "title": "Salle"
      -        },
      -        "score": {
      -          "description": "Score du match (ex: '78 - 65').",
      -          "title": "Score",
      -          "type": "string"
      -        },
      -        "score_contre": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Points encaissés.",
      -          "title": "Score Contre"
      -        },
      -        "score_pour": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Points marqués.",
      -          "title": "Score Pour"
      -        }
      -      },
      -      "required": [
      -        "resultat",
      -        "score"
      -      ],
      -      "title": "MatchForme",
      -      "type": "object"
      -    },
      -    "PhaseBilan": {
      -      "description": "Bilan détaillé pour une phase de compétition spécifique.",
      -      "properties": {
      -        "competition": {
      -          "description": "Nom de la compétition.",
      -          "title": "Competition",
      -          "type": "string"
      -        },
      -        "difference": {
      -          "default": 0,
      -          "description": "Différence de paniers.",
      -          "title": "Difference",
      -          "type": "integer"
      -        },
      -        "gagnes": {
      -          "default": 0,
      -          "description": "Matchs gagnés.",
      -          "title": "Gagnes",
      -          "type": "integer"
      -        },
      -        "match_joues": {
      -          "default": 0,
      -          "description": "Matchs joués dans cette phase.",
      -          "title": "Match Joues",
      -          "type": "integer"
      -        },
      -        "nuls": {
      -          "default": 0,
      -          "description": "Matchs nuls.",
      -          "title": "Nuls",
      -          "type": "integer"
      -        },
      -        "numero_equipe": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Numéro de l'équipe (ex: '1', '2').",
      -          "title": "Numero Equipe"
      -        },
      -        "paniers_encaisses": {
      -          "default": 0,
      -          "description": "Paniers encaissés.",
      -          "title": "Paniers Encaisses",
      -          "type": "integer"
      -        },
      -        "paniers_marques": {
      -          "default": 0,
      -          "description": "Paniers marqués.",
      -          "title": "Paniers Marques",
      -          "type": "integer"
      -        },
      -        "perdus": {
      -          "default": 0,
      -          "description": "Matchs perdus.",
      -          "title": "Perdus",
      -          "type": "integer"
      -        },
      -        "phase_terminee": {
      -          "default": false,
      -          "description": "Indique si la phase est terminée.",
      -          "title": "Phase Terminee",
      -          "type": "boolean"
      -        },
      -        "phase_type": {
      -          "default": "poule",
      -          "description": "Type de phase (poule ou élimination).",
      -          "title": "Phase Type",
      -          "type": "string"
      -        },
      -        "position": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Position actuelle au classement.",
      -          "title": "Position"
      -        },
      -        "poule_id": {
      -          "description": "ID de la poule.",
      -          "title": "Poule Id",
      -          "type": "string"
      -        },
      -        "total_equipes": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Nombre total d'équipes dans la poule.",
      -          "title": "Total Equipes"
      -        }
      -      },
      -      "required": [
      -        "competition",
      -        "poule_id"
      -      ],
      -      "title": "PhaseBilan",
      -      "type": "object"
      -    },
      -    "SerieEnCours": {
      -      "description": "Série actuelle de victoires, défaites ou invincibilité.",
      -      "properties": {
      -        "count": {
      -          "default": 0,
      -          "description": "Nombre de matchs consécutifs dans la série.",
      -          "title": "Count",
      -          "type": "integer"
      -        },
      -        "label": {
      -          "default": "",
      -          "description": "Description lisible (ex: '3 victoires consécutives').",
      -          "title": "Label",
      -          "type": "string"
      -        },
      -        "type": {
      -          "default": "aucune",
      -          "description": "'victoires', 'defaites', 'nuls' ou 'aucune'.",
      -          "title": "Type",
      -          "type": "string"
      -        }
      -      },
      -      "title": "SerieEnCours",
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "result": {
      -      "anyOf": [
      -        {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        {
      -          "$ref": "#/$defs/BilanResponse"
      -        }
      -      ],
      -      "title": "Result"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "ffbb_bilanOutput",
      -  "type": "object"
      -}New value: +null
  2. Changed6 schema fields changedv1.8.0
    • addedInput schema / properties / numero_equipe
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Numéro d'équipe facultatif (ex: 1, 2).",
      +  "title": "Numero Equipe"
      +}
    • addedOutput schema / $defs / BilanResponse / properties / dynamique
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/FormeRecente"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Dynamique et forme récente de l'équipe principale sur les 5 derniers matchs."
      +}
    • addedOutput schema / $defs / BilanResponse / properties / profil_avance
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Profil tactique avancé : rangs attaque/défense, style de jeu, clutch index et bilans domicile/extérieur.",
      +  "title": "Profil Avance"
      +}
    • addedOutput schema / $defs / FormeRecente
      Added value: +{
      +  "description": "Indicateur complet de dynamique et de forme récente (5 derniers matchs).",
      +  "properties": {
      +    "defaites_5_derniers": {
      +      "default": 0,
      +      "description": "Nombre de défaites sur les 5 derniers matchs.",
      +      "title": "Defaites 5 Derniers",
      +      "type": "integer"
      +    },
      +    "diff_moyenne_5": {
      +      "default": 0,
      +      "description": "Différentiel moyen de points sur les 5 derniers matchs.",
      +      "title": "Diff Moyenne 5",
      +      "type": "number"
      +    },
      +    "forme": {
      +      "description": "Résultats des 5 derniers matchs par ordre chronologique (ex: ['V', 'V', 'D', 'V', 'V']).",
      +      "items": {
      +        "type": "string"
      +      },
      +      "title": "Forme",
      +      "type": "array"
      +    },
      +    "forme_str": {
      +      "default": "",
      +      "description": "Représentation texte compacte de la forme (ex: 'V-V-D-V-V').",
      +      "title": "Forme Str",
      +      "type": "string"
      +    },
      +    "matchs": {
      +      "description": "Détail des matchs récents analysés.",
      +      "items": {
      +        "$ref": "#/$defs/MatchForme"
      +      },
      +      "title": "Matchs",
      +      "type": "array"
      +    },
      +    "meilleure_victoire": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Plus large victoire récente (ex: '+24 vs ASPTT (84-60)').",
      +      "title": "Meilleure Victoire"
      +    },
      +    "nuls_5_derniers": {
      +      "default": 0,
      +      "description": "Nombre de nuls sur les 5 derniers matchs.",
      +      "title": "Nuls 5 Derniers",
      +      "type": "integer"
      +    },
      +    "pire_defaite": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Plus lourde défaite récente (ex: '-12 vs US Chauriat (62-74)').",
      +      "title": "Pire Defaite"
      +    },
      +    "pts_encaisses_moyenne_5": {
      +      "default": 0,
      +      "description": "Moyenne de points encaissés par match sur les 5 derniers matchs.",
      +      "title": "Pts Encaisses Moyenne 5",
      +      "type": "number"
      +    },
      +    "pts_marques_moyenne_5": {
      +      "default": 0,
      +      "description": "Moyenne de points marqués par match sur les 5 derniers matchs.",
      +      "title": "Pts Marques Moyenne 5",
      +      "type": "number"
      +    },
      +    "ratio_victoires_5_derniers": {
      +      "default": 0,
      +      "description": "Pourcentage de victoires sur les 5 derniers matchs (0-100%).",
      +      "title": "Ratio Victoires 5 Derniers",
      +      "type": "number"
      +    },
      +    "serie_actuelle": {
      +      "$ref": "#/$defs/SerieEnCours",
      +      "description": "Série globale en cours toutes compétitions."
      +    },
      +    "serie_domicile": {
      +      "$ref": "#/$defs/SerieEnCours",
      +      "description": "Série en cours pour les matchs à domicile."
      +    },
      +    "serie_exterieur": {
      +      "$ref": "#/$defs/SerieEnCours",
      +      "description": "Série en cours pour les matchs à l'extérieur."
      +    },
      +    "tendance": {
      +      "default": "Stable ➡️",
      +      "description": "Tendance de la forme ('En hausse ↗️', 'Stable ➡️', 'En baisse ↘️').",
      +      "title": "Tendance",
      +      "type": "string"
      +    },
      +    "victoires_5_derniers": {
      +      "default": 0,
      +      "description": "Nombre de victoires sur les 5 derniers matchs.",
      +      "title": "Victoires 5 Derniers",
      +      "type": "integer"
      +    }
      +  },
      +  "title": "FormeRecente",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / MatchForme
      Added value: +{
      +  "description": "Détail d'un match pris en compte dans la forme récente.",
      +  "properties": {
      +    "adversaire": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Nom de l'adversaire.",
      +      "title": "Adversaire"
      +    },
      +    "date": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Date et heure du match.",
      +      "title": "Date"
      +    },
      +    "domicile": {
      +      "default": true,
      +      "description": "True si domicile, False si déplacement.",
      +      "title": "Domicile",
      +      "type": "boolean"
      +    },
      +    "ecart": {
      +      "default": 0,
      +      "description": "Différence de points (+13 ou -8).",
      +      "title": "Ecart",
      +      "type": "integer"
      +    },
      +    "journee": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Nom ou numéro de journée.",
      +      "title": "Journee"
      +    },
      +    "resultat": {
      +      "description": "'V' (Victoire), 'D' (Défaite) ou 'N' (Nul).",
      +      "title": "Resultat",
      +      "type": "string"
      +    },
      +    "salle": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Nom de la salle.",
      +      "title": "Salle"
      +    },
      +    "score": {
      +      "description": "Score du match (ex: '78 - 65').",
      +      "title": "Score",
      +      "type": "string"
      +    },
      +    "score_contre": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Points encaissés.",
      +      "title": "Score Contre"
      +    },
      +    "score_pour": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Points marqués.",
      +      "title": "Score Pour"
      +    }
      +  },
      +  "required": [
      +    "resultat",
      +    "score"
      +  ],
      +  "title": "MatchForme",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / SerieEnCours
      Added value: +{
      +  "description": "Série actuelle de victoires, défaites ou invincibilité.",
      +  "properties": {
      +    "count": {
      +      "default": 0,
      +      "description": "Nombre de matchs consécutifs dans la série.",
      +      "title": "Count",
      +      "type": "integer"
      +    },
      +    "label": {
      +      "default": "",
      +      "description": "Description lisible (ex: '3 victoires consécutives').",
      +      "title": "Label",
      +      "type": "string"
      +    },
      +    "type": {
      +      "default": "aucune",
      +      "description": "'victoires', 'defaites', 'nuls' ou 'aucune'.",
      +      "title": "Type",
      +      "type": "string"
      +    }
      +  },
      +  "title": "SerieEnCours",
      +  "type": "object"
      +}
  3. Changed3 schema fields changedv1.5.1
    • addedOutput schema / $defs / BilanResponse / properties / competitions_incluses
      Added value: +{
      +  "description": "Liste des noms de compétitions incluses dans le bilan.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "title": "Competitions Incluses",
      +  "type": "array"
      +}
    • addedOutput schema / $defs / BilanResponse / properties / saison_terminee
      Added value: +{
      +  "default": true,
      +  "description": "Indique si la saison est terminée pour cette équipe (toutes les phases jouées).",
      +  "title": "Saison Terminee",
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / PhaseBilan / properties / total_equipes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Nombre total d'équipes dans la poule.",
      +  "title": "Total Equipes"
      +}
  4. Changed5 schema fields changedv1.4.0
    • addedOutput schema / $defs
      Added value: +{
      +  "BilanResponse": {
      +    "description": "Réponse structurée et typée pour le bilan d'une équipe.",
      +    "properties": {
      +      "_meta": {
      +        "additionalProperties": true,
      +        "description": "Métadonnées de fraîcheur et de cache.",
      +        "title": "Meta",
      +        "type": "object"
      +      },
      +      "bilan_total": {
      +        "$ref": "#/$defs/BilanTotal",
      +        "description": "Totaux cumulés toutes phases."
      +      },
      +      "categorie": {
      +        "description": "Catégorie d'âge/genre.",
      +        "title": "Categorie",
      +        "type": "string"
      +      },
      +      "club": {
      +        "description": "Nom officiel du club.",
      +        "title": "Club",
      +        "type": "string"
      +      },
      +      "equipes_bilan": {
      +        "additionalProperties": true,
      +        "description": "Bilans ventilés par numéro d'équipe.",
      +        "title": "Equipes Bilan",
      +        "type": "object"
      +      },
      +      "phase_courante": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/PhaseBilan"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Détails de la dernière phase en cours."
      +      },
      +      "phases": {
      +        "description": "Liste de toutes les phases jouées.",
      +        "items": {
      +          "$ref": "#/$defs/PhaseBilan"
      +        },
      +        "title": "Phases",
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "club",
      +      "categorie",
      +      "bilan_total"
      +    ],
      +    "title": "BilanResponse",
      +    "type": "object"
      +  },
      +  "BilanTotal": {
      +    "description": "Statistiques cumulées d'une équipe (victoires, défaites, paniers).",
      +    "properties": {
      +      "difference": {
      +        "default": 0,
      +        "description": "Différence de paniers (marqués - encaissés).",
      +        "title": "Difference",
      +        "type": "integer"
      +      },
      +      "gagnes": {
      +        "default": 0,
      +        "description": "Nombre de matchs gagnés.",
      +        "title": "Gagnes",
      +        "type": "integer"
      +      },
      +      "match_joues": {
      +        "default": 0,
      +        "description": "Nombre de matchs joués.",
      +        "title": "Match Joues",
      +        "type": "integer"
      +      },
      +      "nuls": {
      +        "default": 0,
      +        "description": "Nombre de matchs nuls.",
      +        "title": "Nuls",
      +        "type": "integer"
      +      },
      +      "paniers_encaisses": {
      +        "default": 0,
      +        "description": "Total des paniers encaissés.",
      +        "title": "Paniers Encaisses",
      +        "type": "integer"
      +      },
      +      "paniers_marques": {
      +        "default": 0,
      +        "description": "Total des paniers marqués.",
      +        "title": "Paniers Marques",
      +        "type": "integer"
      +      },
      +      "perdus": {
      +        "default": 0,
      +        "description": "Nombre de matchs perdus.",
      +        "title": "Perdus",
      +        "type": "integer"
      +      }
      +    },
      +    "title": "BilanTotal",
      +    "type": "object"
      +  },
      +  "PhaseBilan": {
      +    "description": "Bilan détaillé pour une phase de compétition spécifique.",
      +    "properties": {
      +      "competition": {
      +        "description": "Nom de la compétition.",
      +        "title": "Competition",
      +        "type": "string"
      +      },
      +      "difference": {
      +        "default": 0,
      +        "description": "Différence de paniers.",
      +        "title": "Difference",
      +        "type": "integer"
      +      },
      +      "gagnes": {
      +        "default": 0,
      +        "description": "Matchs gagnés.",
      +        "title": "Gagnes",
      +        "type": "integer"
      +      },
      +      "match_joues": {
      +        "default": 0,
      +        "description": "Matchs joués dans cette phase.",
      +        "title": "Match Joues",
      +        "type": "integer"
      +      },
      +      "nuls": {
      +        "default": 0,
      +        "description": "Matchs nuls.",
      +        "title": "Nuls",
      +        "type": "integer"
      +      },
      +      "numero_equipe": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Numéro de l'équipe (ex: '1', '2').",
      +        "title": "Numero Equipe"
      +      },
      +      "paniers_encaisses": {
      +        "default": 0,
      +        "description": "Paniers encaissés.",
      +        "title": "Paniers Encaisses",
      +        "type": "integer"
      +      },
      +      "paniers_marques": {
      +        "default": 0,
      +        "description": "Paniers marqués.",
      +        "title": "Paniers Marques",
      +        "type": "integer"
      +      },
      +      "perdus": {
      +        "default": 0,
      +        "description": "Matchs perdus.",
      +        "title": "Perdus",
      +        "type": "integer"
      +      },
      +      "phase_terminee": {
      +        "default": false,
      +        "description": "Indique si la phase est terminée.",
      +        "title": "Phase Terminee",
      +        "type": "boolean"
      +      },
      +      "phase_type": {
      +        "default": "poule",
      +        "description": "Type de phase (poule ou élimination).",
      +        "title": "Phase Type",
      +        "type": "string"
      +      },
      +      "position": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Position actuelle au classement.",
      +        "title": "Position"
      +      },
      +      "poule_id": {
      +        "description": "ID de la poule.",
      +        "title": "Poule Id",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "competition",
      +      "poule_id"
      +    ],
      +    "title": "PhaseBilan",
      +    "type": "object"
      +  }
      +}
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / properties
      Added value: +{
      +  "result": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      {
      +        "$ref": "#/$defs/BilanResponse"
      +      }
      +    ],
      +    "title": "Result"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "result"
      +]
    • changedOutput schema / title
      Previous value: -"ffbb_bilanDictOutput"New value: +"ffbb_bilanOutput"
  5. Addedv1.3.2
  6. Removedv1.3.1
  7. Addedv1.2.0

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about scope (all phases, one call, result contents) but does not disclose behaviors such as freshness, caching, or limits beyond what the annotation hints imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states exactly what the tool does, and the second gives concrete query examples. Every sentence earns its place with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity tool with 5 params, full schema coverage, and no output schema, the description provides enough high-level output expectation (V/D/N, paniers, phases) and example usage. It could be more complete with explicit mention of the required club_name/organisme_id identification, but the schema covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented with examples in the input schema. The description does not add extra semantic value for parameters, which matches the baseline of 3 when the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: producing a complete bilan (record) for a team across all phases in a single call, and enumerates included data (V/D/N, paniers, phases). This clearly distinguishes it from siblings like ffbb_bilan_saison and ffbb_team_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly positions the tool as the priority choice for queries like 'quel est le bilan de X ?' and 'résultats de U11M1', giving clear usage context. It does not explicitly name alternatives or exclusion conditions, so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nickdesi/FFBB-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server