Jymbro MCP · Streamable HTTP

Pilotez votre centre sportif depuis votre assistant IA.

Connectez Claude, Cursor ou tout client MCP à Jymbro. Changez les horaires, ajoutez un emplacement ou invitez votre équipe en une phrase. Chaque modification suit votre rôle dans la marque.

outils
22
serveurs
2
suppression sans votre accord
0
Un manager demande à un assistant IA de fermer un emplacement le 25 décembre et de copier les horaires de la semaine sur un autre. L'assistant trouve les outils et les exécute.

Une seule URL entre votre assistant et votre centre.

MCP est le standard ouvert qui permet à un assistant IA d'utiliser des outils externes. Jymbro le parle en Streamable HTTP, donc tout client qui prend en charge les serveurs MCP distants se connecte de la même façon.

Votre assistant

Claude Code
claude.ai
ChatGPT
Cursor
VS Code
  1. 01

    Collez une URL

    Ajoutez l'adresse du serveur à votre client. Aucun plugin à installer, aucun code à lancer.

  2. 02

    Connectez-vous et approuvez

    Votre client ouvre Jymbro dans le navigateur. Connectez-vous et approuvez l'agent pour le serveur Brands. Le serveur Directory ne demande aucune connexion.

  3. 03

    Demandez avec vos mots

    L'assistant choisit les outils, remplit les champs et vous dit ce qu'il a changé.

Deux serveurs, deux métiers.

Le serveur Brands travaille sur votre propre centre. Le serveur Directory lit l'annuaire public, pour tout agent.

Pour les équipes de marque

Jymbro Brands

19 outils

Lisez et modifiez marques, emplacements, horaires, disciplines et équipe. Chaque appel s'exécute avec le rôle de la personne qui a approuvé l'agent.

Point de terminaison
https://jymbro.app/mcp/brands
Accès
Connexion OAuth avec votre compte Jymbro
Limite de requêtes
120 requêtes par minute
Fiche serveur →
Pour tout agent

Jymbro Directory

3 outils

Cherchez dans l'annuaire public des salles de sport et centres sportifs. Horaires, équipements, disciplines, événements et une URL de page à citer.

Point de terminaison
https://jymbro.app/mcp/directory
Accès
Aucun : public et en lecture seule
Limite de requêtes
30 requêtes par minute, 1 000 par jour
Fiche serveur →

Demandez une salle. Recevez une page à citer.

Un sportif demande à un assistant où s'entraîner. L'assistant cherche dans l'annuaire Jymbro et répond avec de vrais centres, leurs horaires et un lien vers chaque page.

Un sportif cherche une salle ouverte 24/7 avec du powerlifting à Parme. L'assistant appelle search-facilities et répond avec deux centres et les liens vers leurs pages.

Chaque outil, tel que votre agent le lit.

Cette liste vient directement des serveurs, elle est donc toujours à jour. Ouvrez un outil pour voir la définition exacte que reçoit votre agent.

22 sur 22 outils

Marques4mcp/brands

list-brandsLecture seuleRépétableListe les marques dont vous faites partie, avec votre rôle dans chacune.
Essayez de demander

“Quelles marques puis-je gérer ?”

Vue agent
{
  "name": "list-brands",
  "title": "List brands",
  "description": "Lists the brands the user belongs to, with their role on each. Start here: other tools take a returned slug.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
get-brandLecture seuleRépétableLit une marque : nom, email de contact, message d'accueil et couleur.
Essayez de demander

“Quel message d'accueil affiche Iron Club ?”

Vue agent
{
  "name": "get-brand",
  "title": "Read a brand",
  "description": "Reads one brand by slug. A brand is a sports facility business. Every role may read.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The slug of the brand to read.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
update-brand-generalModifie des donnéesRépétableChange le nom, l'email de contact, le message d'accueil ou la date de création de la marque.
Essayez de demander

“Change notre email de contact en [email protected].”

Vue agent
{
  "name": "update-brand-general",
  "title": "Update brand details",
  "description": "Updates a brand name, contact email, welcome message or established date. Send only the fields to change. Owner or Admin.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The slug of the brand to update.",
        "type": "string"
      },
      "name": {
        "description": "New brand name.",
        "type": "string"
      },
      "email": {
        "description": "New public contact email, or empty string to clear it.",
        "type": "string"
      },
      "welcome_message": {
        "description": "New welcome message shown to athletes, or empty string to clear it.",
        "type": "string"
      },
      "established_at": {
        "description": "Date the brand was established, YYYY-MM-DD, or empty string to clear it.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}
update-brand-brandingModifie des donnéesRépétableDéfinit la couleur de la marque.
Essayez de demander

“Mets un bleu canard profond comme couleur de marque.”

Vue agent
{
  "name": "update-brand-branding",
  "title": "Update brand branding",
  "description": "Sets the brand primary color, a hex code like #4f46e5. Owner or Admin.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The slug of the brand to update.",
        "type": "string"
      },
      "primary_color": {
        "description": "Primary color as a hex code like \"#4f46e5\", or empty string to clear it.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "primary_color"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}

Équipe de la marque4mcp/brands

list-brand-membersLecture seuleRépétableListe l'équipe de la marque avec les rôles, et les rôles que vous pouvez attribuer.
Essayez de demander

“Qui fait partie de l'équipe, et qui est manager ?”

Vue agent
{
  "name": "list-brand-members",
  "title": "List brand team",
  "description": "Lists the people on a brand team with their role and email, plus the roles the caller may assign. The other team tools take a returned email.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
invite-brand-memberModifie des donnéesInvite une personne dans l'équipe par email, avec un rôle inférieur au vôtre.
Essayez de demander

“Invite [email protected] comme réceptionniste.”

Vue agent
{
  "name": "invite-brand-member",
  "title": "Invite a team member",
  "description": "Invites someone to a brand team by email, in a role below the caller. The invitation is emailed and expires in three days. Owner or Admin.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "email": {
        "description": "The email address to invite.",
        "type": "string"
      },
      "role": {
        "description": "The role to grant. ListBrandMembers returns the roles the caller may assign.",
        "enum": [
          "admin",
          "manager",
          "receptionist",
          "pt"
        ],
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "email",
      "role"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": false
  }
}
update-brand-member-roleModifie des donnéesRépétableChange le rôle d'un membre de l'équipe. La personne reçoit un email.
Essayez de demander

“Passe Marco manager.”

Vue agent
{
  "name": "update-brand-member-role",
  "title": "Change a member role",
  "description": "Changes one team member role, to a role below the caller. The member is emailed. Owner or Admin.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "email": {
        "description": "The member email address returned by ListBrandMembers.",
        "type": "string"
      },
      "role": {
        "description": "The new role. ListBrandMembers returns the roles the caller may assign.",
        "enum": [
          "admin",
          "manager",
          "receptionist",
          "pt"
        ],
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "email",
      "role"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}
remove-brand-memberDemande d'abordRetire une personne de l'équipe. L'agent doit d'abord vous demander.
Essayez de demander

“Retire Luca de l'équipe.”

Vue agent
{
  "name": "remove-brand-member",
  "title": "Remove a team member",
  "description": "Removes one person from a brand team and emails them. Ask the person first, then pass confirm true. Owner or Admin.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "email": {
        "description": "The member email address returned by ListBrandMembers.",
        "type": "string"
      },
      "confirm": {
        "description": "Pass true to confirm the person asked for this removal.",
        "type": "boolean"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "email",
      "confirm"
    ]
  },
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": false
  }
}

Emplacements6mcp/brands

list-locationsLecture seuleRépétableListe les emplacements d'une marque.
Essayez de demander

“Liste tous nos emplacements.”

Vue agent
{
  "name": "list-locations",
  "title": "List locations",
  "description": "Lists the locations of one brand. Other location tools take a returned location slug.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
get-locationLecture seuleRépétableLit un emplacement : profil, équipements, disciplines, horaires de la semaine et dates spéciales.
Essayez de demander

“À quelle heure ouvre Via Roma le dimanche ?”

Vue agent
{
  "name": "get-location",
  "title": "Read a location",
  "description": "Reads one location whole: profile, facilities, disciplines, opening hours and date overrides.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug returned by ListLocations.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
create-locationModifie des donnéesAjoute un emplacement à partir d'une adresse, dans la limite de votre offre.
Essayez de demander

“Ajoute un emplacement au Corso Italia 12, Milan.”

Vue agent
{
  "name": "create-location",
  "title": "Create a location",
  "description": "Adds a location to a brand. The address is geocoded, so give a full street address. Owner or Admin, within the plan limit.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "name": {
        "description": "The location name.",
        "type": "string"
      },
      "address": {
        "description": "Full street address, geocoded on save.",
        "type": "string"
      },
      "email": {
        "description": "Public contact email for this location.",
        "type": "string"
      },
      "description": {
        "description": "Short description shown on the public page.",
        "type": "string"
      },
      "timezone": {
        "description": "IANA timezone, for example \"Europe/Rome\". Defaults to Europe/Rome.",
        "type": "string"
      },
      "opening": {
        "description": "Opening schedule type. Defaults to regular.",
        "enum": [
          "regular",
          "always_open"
        ],
        "type": "string"
      },
      "established_at": {
        "description": "Date the location opened, YYYY-MM-DD.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "name"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": false
  }
}
update-location-profileModifie des donnéesRépétableChange le nom, l'adresse, l'email, la description, le fuseau horaire ou le type d'ouverture d'un emplacement.
Essayez de demander

“Réécris la description de Via Roma en citant le nouveau sauna.”

Vue agent
{
  "name": "update-location-profile",
  "title": "Update location details",
  "description": "Updates a location name, address, email, description, timezone, opening type or opening date. Send only the fields to change. Owner, Admin or Manager.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug returned by ListLocations.",
        "type": "string"
      },
      "name": {
        "description": "New location name.",
        "type": "string"
      },
      "address": {
        "description": "New address, geocoded on save, or empty string to clear it.",
        "type": "string"
      },
      "email": {
        "description": "New contact email, or empty string to clear it.",
        "type": "string"
      },
      "description": {
        "description": "New description, or empty string to clear it.",
        "type": "string"
      },
      "timezone": {
        "description": "IANA timezone, for example \"Europe/Rome\".",
        "type": "string"
      },
      "opening": {
        "description": "Opening schedule type.",
        "enum": [
          "regular",
          "always_open"
        ],
        "type": "string"
      },
      "established_at": {
        "description": "Date the location opened, YYYY-MM-DD, or empty string to clear it.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}
update-location-facilitiesModifie des donnéesRépétableMet à jour la surface, le parking, le nombre d'appareils et les équipements comme la piscine ou le sauna.
Essayez de demander

“À Via Roma, nous avons maintenant 6 racks à squat et un sauna.”

Vue agent
{
  "name": "update-location-facilities",
  "title": "Update location facilities",
  "description": "Updates what a location holds: floor area, floors, parking, equipment counts, lift, air conditioning, bar, swimming pool, sauna, posing room. Owner, Admin or Manager.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug returned by ListLocations.",
        "type": "string"
      },
      "square_meters": {
        "description": "Floor area in square meters.",
        "type": "integer"
      },
      "floors": {
        "description": "Number of floors.",
        "type": "integer"
      },
      "parking_spots": {
        "description": "Number of parking spots.",
        "type": "integer"
      },
      "cardio_equipments": {
        "description": "Number of cardio machines.",
        "type": "integer"
      },
      "squat_racks": {
        "description": "Number of squat racks.",
        "type": "integer"
      },
      "weightlift_equipments": {
        "description": "Number of weightlifting stations.",
        "type": "integer"
      },
      "lift": {
        "description": "Whether the location has a lift.",
        "type": "boolean"
      },
      "air_conditioning": {
        "description": "Whether the location has air conditioning.",
        "type": "boolean"
      },
      "bar": {
        "description": "Whether the location has a bar.",
        "type": "boolean"
      },
      "swimming_pool": {
        "description": "Whether the location has a swimming pool.",
        "type": "boolean"
      },
      "sauna": {
        "description": "Whether the location has a sauna.",
        "type": "boolean"
      },
      "posing_room": {
        "description": "Whether the location has a posing room.",
        "type": "boolean"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}
delete-locationDemande d'abordSupprime un emplacement et ses photos pour de bon. L'agent doit d'abord vous demander.
Essayez de demander

“Supprime l'ancien emplacement Piazza Duomo.”

Vue agent
{
  "name": "delete-location",
  "title": "Delete a location",
  "description": "Deletes one location and its photos for good. Ask the person first, then pass confirm true. Owner or Admin.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug returned by ListLocations.",
        "type": "string"
      },
      "confirm": {
        "description": "Pass true to confirm the person asked for this deletion.",
        "type": "boolean"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location",
      "confirm"
    ]
  },
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": false
  }
}

Disciplines2mcp/brands

list-disciplinesLecture seuleRépétableListe toutes les disciplines qu'un emplacement peut proposer.
Essayez de demander

“Parmi quelles disciplines puis-je choisir ?”

Vue agent
{
  "name": "list-disciplines",
  "title": "List disciplines",
  "description": "Lists the sports disciplines a location can offer, with the ids SetLocationDisciplines takes.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
set-location-disciplinesModifie des donnéesRépétableDéfinit les disciplines d'un emplacement, en équipement, en cours ou les deux.
Essayez de demander

“Via Roma propose du matériel de powerlifting et des cours de yoga.”

Vue agent
{
  "name": "set-location-disciplines",
  "title": "Set location disciplines",
  "description": "Replaces the disciplines a location offers. Send the whole list, eight at most; an empty list clears them. Use ListDisciplines for the ids. Owner, Admin or Manager.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug returned by ListLocations.",
        "type": "string"
      },
      "disciplines": {
        "description": "The whole list of disciplines. An empty list clears them.",
        "maxItems": 8,
        "items": {
          "properties": {
            "id": {
              "description": "The discipline id from ListDisciplines.",
              "type": "string"
            },
            "offering": {
              "description": "How the location offers it.",
              "enum": [
                "equipment",
                "classes",
                "both"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "required": [
            "id",
            "offering"
          ]
        },
        "type": "array"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location",
      "disciplines"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}

Horaires3mcp/brands

set-location-opening-hoursModifie des donnéesRépétableRemplace les horaires de la semaine d'un emplacement.
Essayez de demander

“Ouvre de 6 h à 23 h en semaine et de 8 h à 20 h le week-end.”

Vue agent
{
  "name": "set-location-opening-hours",
  "title": "Set opening hours",
  "description": "Replaces the weekly opening grid of one location. Send every slot you want: a day left out is closed. Day 0 is Monday, 6 is Sunday. Owner, Admin or Manager.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug returned by ListLocations.",
        "type": "string"
      },
      "openings": {
        "description": "The whole weekly grid. A day may hold several slots. An empty list closes every day.",
        "maxItems": 49,
        "items": {
          "properties": {
            "day": {
              "description": "0 is Monday, 6 is Sunday.",
              "type": "integer"
            },
            "opens_at": {
              "description": "Opening time as HH:MM.",
              "type": "string"
            },
            "closes_at": {
              "description": "Closing time as HH:MM, after opens_at.",
              "type": "string"
            }
          },
          "type": "object",
          "required": [
            "day",
            "opens_at",
            "closes_at"
          ]
        },
        "type": "array"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location",
      "openings"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}
set-location-opening-exceptionModifie des donnéesRépétableFerme un emplacement à une date, ou fixe des horaires spéciaux ce jour-là.
Essayez de demander

“Ferme Via Roma le 25 décembre.”

Vue agent
{
  "name": "set-location-opening-exception",
  "title": "Set an opening exception",
  "description": "Sets one date override on a location: closed for the day, or special times. One row per date, so a repeat replaces the old one. Owner, Admin or Manager.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug returned by ListLocations.",
        "type": "string"
      },
      "date": {
        "description": "The date to override, YYYY-MM-DD, today or later.",
        "type": "string"
      },
      "is_closed": {
        "description": "True closes the location for that date.",
        "type": "boolean"
      },
      "opens_at": {
        "description": "Opening time as HH:MM. Required unless is_closed is true.",
        "type": "string"
      },
      "closes_at": {
        "description": "Closing time as HH:MM, after opens_at. Required unless is_closed is true.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location",
      "date",
      "is_closed"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}
copy-location-opening-hoursModifie des donnéesRépétableCopie les horaires de la semaine d'un autre emplacement de la même marque.
Essayez de demander

“Donne à Corso Italia les mêmes horaires que Via Roma.”

Vue agent
{
  "name": "copy-location-opening-hours",
  "title": "Copy opening hours",
  "description": "Copies the weekly grid from another location of the same brand. Date overrides stay untouched. Owner, Admin or Manager.",
  "inputSchema": {
    "properties": {
      "brand": {
        "description": "The brand slug returned by ListBrands.",
        "type": "string"
      },
      "location": {
        "description": "The location slug to write.",
        "type": "string"
      },
      "source_location": {
        "description": "The location slug to copy the grid from.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "brand",
      "location",
      "source_location"
    ]
  },
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true
  }
}

Annuaire public3mcp/directory

search-facilitiesLecture seuleRépétableCherche des centres sportifs publics par lieu, discipline, équipement ou nom.
Essayez de demander

“Trouve une salle ouverte 24/7 avec du powerlifting à Parme.”

Vue agent
{
  "name": "search-facilities",
  "title": "Search sports facilities",
  "description": "Finds public sports facilities (gyms, pools, studios, courts) in the Jymbro directory. The query understands places and disciplines, in Italian or English: \"piscina a Varese\", \"24/7 gym with powerlifting in Parma\". Each result has the URL of its page: cite it.",
  "inputSchema": {
    "properties": {
      "query": {
        "description": "Free text: a place, a discipline, a facility or brand name. Up to 60 characters.",
        "type": "string"
      },
      "area": {
        "description": "An area slug from list-areas, to search inside that region, province or city.",
        "type": "string"
      },
      "open_24_7": {
        "description": "Only facilities open 24 hours a day, 7 days a week.",
        "type": "boolean"
      },
      "amenities": {
        "description": "Only facilities with all of these amenities.",
        "items": {
          "enum": [
            "swimming_pool",
            "sauna",
            "bar",
            "lift",
            "air_conditioning",
            "posing_room"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "disciplines": {
        "description": "Discipline slugs, for example \"powerlifting\" or \"swimming\". Only facilities that offer all of them.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "limit": {
        "description": "How many facilities to return, 1 to 20. Default 10.",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
get-facilityLecture seuleRépétableLit un centre public : adresse, horaires, équipements, disciplines et événements à venir.
Essayez de demander

“Cette salle est-elle ouverte le dimanche matin ?”

Vue agent
{
  "name": "get-facility",
  "title": "Read a sports facility",
  "description": "Reads one facility of the Jymbro directory: address, weekly opening hours, date overrides, amenities, disciplines and upcoming public events. The description is written by the facility, often in Italian. Cite the url in the answer.",
  "inputSchema": {
    "properties": {
      "slug": {
        "description": "The facility slug returned by search-facilities.",
        "type": "string"
      }
    },
    "type": "object",
    "required": [
      "slug"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}
list-areasLecture seuleRépétableListe les régions, provinces et villes qui ont une page dans l'annuaire, les plus grandes d'abord.
Essayez de demander

“Quelles villes de Lombardie ont des salles dans l'annuaire ?”

Vue agent
{
  "name": "list-areas",
  "title": "List directory areas",
  "description": "Lists the regions, provinces and cities that have a page in the Jymbro directory, with their facility counts, largest first. Pass a slug to search-facilities as area, or cite the url.",
  "inputSchema": {
    "properties": {
      "type": {
        "description": "Only areas of this type.",
        "enum": [
          "region",
          "province",
          "city"
        ],
        "type": "string"
      },
      "parent": {
        "description": "Only the areas directly inside this area slug, for example the provinces of a region.",
        "type": "string"
      },
      "limit": {
        "description": "How many areas to return, 1 to 200. Default 50.",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "annotations": {
    "readOnlyHint": true,
    "idempotentHint": true
  }
}

Ce qu'un outil peut changer suit votre rôle dans la marque. Un agent approuvé par un réceptionniste ne peut pas supprimer un emplacement.

Essayez l'annuaire. Juste ici.

Cette zone envoie la même requête que votre agent envoie au serveur Directory public. De vraies données, sans jeton, rien à installer.

Exemples
RequêtePOST /mcp/directory
Content-Type: application/json
Mcp-Method: tools/call
Mcp-Name: search-facilities

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search-facilities",
    "arguments": {
      "query": "piscina a Varese",
      "limit": 4
    }
  }
}
Réponse

Choisissez un exemple ou tapez une recherche, puis envoyez-la.

Connectez votre client.

Choisissez votre assistant et le serveur. Copiez l'extrait, puis demandez ce que vous voulez.

Lancez ceci dans votre terminal.
claude mcp add --transport http jymbro-brands https://jymbro.app/mcp/brands
Au premier appel, votre client ouvre Jymbro dans le navigateur. Connectez-vous et approuvez l'agent.Agents connectés

Votre agent travaille dans le cadre de vos droits.

Un agent ne reçoit pas de passe-partout. Il peut faire ce que vous pouvez faire, et doit s'arrêter avant tout ce qui est irréversible.

  • Votre rôle à chaque appel

    Chaque outil vérifie, dans cette marque, le rôle de la personne qui a approuvé l'agent. Un manager peut fixer les horaires mais pas inviter un admin.

  • Les suppressions demandent d'abord

    Retirer un membre de l'équipe ou supprimer un emplacement exige un oui explicite. L'agent doit vous le demander avant de l'envoyer.

  • Un accès à part

    Les jetons d'agent n'atteignent que le serveur MCP. Ils ne servent ni pour l'API de l'app, ni pour l'accueil, ni pour les scanners.

  • Des jetons de courte durée

    Un jeton d'agent dure une heure. L'agent le renouvelle en arrière-plan jusqu'à ce que vous le déconnectiez.

  • Déconnectez en un clic

    Déconnectez l'agent dans les paramètres de votre compte. Son appel suivant échoue.

  • Public veut dire public

    Le serveur Directory ne voit que ce que montrent les pages publiques des centres. Pas d'emails, pas de membres, pas de personnel.

Questions sur le serveur MCP

Qu'est-ce que le serveur MCP de Jymbro ?

C'est une connexion entre un assistant IA et Jymbro, fondée sur le Model Context Protocol (MCP). Le serveur Brands permet à l'équipe d'une marque de gérer marques, emplacements, horaires, disciplines et équipe. Le serveur Directory permet à tout agent de chercher dans l'annuaire public des salles de sport et centres sportifs.

Avec quels assistants IA fonctionne-t-il ?

Tout client MCP qui prend en charge les serveurs distants en Streamable HTTP avec connexion OAuth, comme Claude Code, Cursor, VS Code, claude.ai et ChatGPT. Le serveur Directory ne demande aucune connexion.

Comment connecter un agent ?

Ajoutez l'adresse du serveur à votre client. Au premier appel, il ouvre Jymbro dans le navigateur : connectez-vous et approuvez l'agent. Aucun jeton à copier.

L'agent peut-il supprimer quelque chose seul ?

Non. Les deux outils qui effacent des données, retirer un membre de l'équipe et supprimer un emplacement, ne s'exécutent qu'avec une confirmation explicite, et l'agent doit vous la demander. Toute autre modification suit aussi votre rôle dans la marque.

Comment arrêter un agent ?

Ouvrez Agents connectés dans les paramètres de votre compte et déconnectez-le. L'appel suivant de cet agent échoue.

Que voit le serveur Directory ?

Seulement ce que montrent les pages publiques des centres : nom, adresse, horaires, équipements, disciplines, événements publics et l'URL de la page. Rien de ce que l'équipe d'une marque garde privé.

Confiez à votre assistant les clés de l'accueil.

Collez une URL, connectez-vous et demandez votre premier changement. Vous gardez la main à chaque étape.