Jymbro MCP · Streamable HTTP

Führen Sie Ihre Sportstätte über Ihren KI-Assistenten.

Verbinden Sie Claude, Cursor oder jeden MCP-Client mit Jymbro. Ändern Sie Öffnungszeiten, fügen Sie einen Standort hinzu oder laden Sie Ihr Team ein, mit einem Satz. Jede Änderung folgt Ihrer Rolle in der Marke.

Tools
22
Server
2
Kein Löschen ohne Ihr Ja
0
Ein Manager bittet einen KI-Assistenten, einen Standort am 25. Dezember zu schließen und die Wochenzeiten auf einen anderen zu kopieren. Der Assistent findet die Tools und führt sie aus.

Eine URL zwischen Ihrem Assistenten und Ihrer Sportstätte.

MCP ist der offene Standard, mit dem ein KI-Assistent externe Tools nutzt. Jymbro kommuniziert über Streamable HTTP, daher verbindet sich jeder Client mit Unterstützung für entfernte MCP-Server auf dieselbe Weise.

Ihr Assistent

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

    Eine URL einfügen

    Fügen Sie die Serveradresse in Ihren Client ein. Kein Plugin, kein Code.

  2. 02

    Anmelden und freigeben

    Ihr Client öffnet Jymbro im Browser. Melden Sie sich an und geben Sie den Agenten für den Brands-Server frei. Der Directory-Server braucht keine Anmeldung.

  3. 03

    In eigenen Worten fragen

    Der Assistent wählt die Tools, füllt die Felder aus und sagt Ihnen, was er geändert hat.

Zwei Server, zwei Aufgaben.

Der Brands-Server arbeitet an Ihrer eigenen Sportstätte. Der Directory-Server liest das öffentliche Verzeichnis, für jeden Agenten.

Für Markenteams

Jymbro Brands

19 Tools

Lesen und ändern Sie Marken, Standorte, Öffnungszeiten, Disziplinen und Ihr Team. Jeder Aufruf läuft mit der Rolle der Person, die den Agenten freigegeben hat.

Endpunkt
https://jymbro.app/mcp/brands
Zugang
OAuth-Anmeldung mit Ihrem Jymbro-Konto
Anfragelimit
120 Anfragen pro Minute
Server-Karte →
Für jeden Agenten

Jymbro Directory

3 Tools

Durchsuchen Sie das öffentliche Verzeichnis von Fitnessstudios und Sportstätten. Öffnungszeiten, Ausstattung, Disziplinen, Events und eine Seiten-URL zum Zitieren.

Endpunkt
https://jymbro.app/mcp/directory
Zugang
Keiner: öffentlich und nur lesend
Anfragelimit
30 Anfragen pro Minute, 1.000 pro Tag
Server-Karte →

Nach einem Studio fragen. Eine Seite zum Zitieren bekommen.

Ein Sportler fragt einen Assistenten nach einem Ort zum Trainieren. Der Assistent durchsucht das Jymbro-Verzeichnis und antwortet mit echten Sportstätten, ihren Öffnungszeiten und einem Link zu jeder Seite.

Ein Sportler sucht ein 24/7-Studio mit Powerlifting in Parma. Der Assistent ruft search-facilities auf und antwortet mit zwei Sportstätten und ihren Seitenlinks.

Jedes Tool, so wie Ihr Agent es liest.

Diese Liste kommt direkt von den Servern und ist daher immer aktuell. Öffnen Sie ein Tool, um die genaue Definition zu sehen, die Ihr Agent erhält.

22 von 22 Tools

Marken4mcp/brands

list-brandsNur lesendWiederholbarListet die Marken, zu denen Sie gehören, mit Ihrer Rolle in jeder.
Fragen Sie zum Beispiel

“Welche Marken kann ich verwalten?”

Agentenansicht
{
  "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-brandNur lesendWiederholbarLiest eine Marke: Name, Kontakt-E-Mail, Begrüßungstext und Farbe.
Fragen Sie zum Beispiel

“Welchen Begrüßungstext zeigt Iron Club?”

Agentenansicht
{
  "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-generalÄndert DatenWiederholbarÄndert Namen, Kontakt-E-Mail, Begrüßungstext oder Gründungsdatum der Marke.
Fragen Sie zum Beispiel

“Ändere unsere Kontakt-E-Mail auf [email protected].”

Agentenansicht
{
  "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-brandingÄndert DatenWiederholbarLegt die Markenfarbe fest.
Fragen Sie zum Beispiel

“Mach unsere Markenfarbe zu einem tiefen Petrol.”

Agentenansicht
{
  "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
  }
}

Markenteam4mcp/brands

list-brand-membersNur lesendWiederholbarListet Ihr Markenteam mit Rollen und die Rollen, die Sie vergeben dürfen.
Fragen Sie zum Beispiel

“Wer ist im Team, und wer ist Manager?”

Agentenansicht
{
  "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-memberÄndert DatenLädt eine Person per E-Mail ins Team ein, mit einer Rolle unter Ihrer.
Fragen Sie zum Beispiel

“Lade [email protected] als Rezeptionistin ein.”

Agentenansicht
{
  "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-roleÄndert DatenWiederholbarÄndert die Rolle eines Teammitglieds. Die Person erhält eine E-Mail.
Fragen Sie zum Beispiel

“Mach Marco zum Manager.”

Agentenansicht
{
  "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-memberFragt zuerstEntfernt eine Person aus dem Team. Der Agent muss Sie zuerst fragen.
Fragen Sie zum Beispiel

“Entferne Luca aus dem Team.”

Agentenansicht
{
  "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
  }
}

Standorte6mcp/brands

list-locationsNur lesendWiederholbarListet die Standorte einer Marke.
Fragen Sie zum Beispiel

“Liste alle unsere Standorte auf.”

Agentenansicht
{
  "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-locationNur lesendWiederholbarLiest einen Standort: Profil, Ausstattung, Disziplinen, Wochenzeiten und Sonderdaten.
Fragen Sie zum Beispiel

“Wann hat Via Roma am Sonntag geöffnet?”

Agentenansicht
{
  "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-locationÄndert DatenFügt einen Standort aus einer Adresse hinzu, innerhalb Ihres Tariflimits.
Fragen Sie zum Beispiel

“Füge einen Standort in Corso Italia 12, Mailand hinzu.”

Agentenansicht
{
  "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-profileÄndert DatenWiederholbarÄndert Name, Adresse, E-Mail, Beschreibung, Zeitzone oder Öffnungsart eines Standorts.
Fragen Sie zum Beispiel

“Schreib die Beschreibung von Via Roma neu und erwähne die neue Sauna.”

Agentenansicht
{
  "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-facilitiesÄndert DatenWiederholbarAktualisiert Fläche, Parkplätze, Geräteanzahl und Ausstattung wie Pool oder Sauna.
Fragen Sie zum Beispiel

“In Via Roma haben wir jetzt 6 Squat Racks und eine Sauna.”

Agentenansicht
{
  "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-locationFragt zuerstLöscht einen Standort und seine Fotos endgültig. Der Agent muss Sie zuerst fragen.
Fragen Sie zum Beispiel

“Lösche den alten Standort Piazza Duomo.”

Agentenansicht
{
  "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
  }
}

Disziplinen2mcp/brands

list-disciplinesNur lesendWiederholbarListet alle Disziplinen, die ein Standort anbieten kann.
Fragen Sie zum Beispiel

“Aus welchen Disziplinen kann ich wählen?”

Agentenansicht
{
  "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-disciplinesÄndert DatenWiederholbarLegt die Disziplinen eines Standorts fest, als Geräte, Kurse oder beides.
Fragen Sie zum Beispiel

“Via Roma bietet Powerlifting-Geräte und Yogakurse.”

Agentenansicht
{
  "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
  }
}

Öffnungszeiten3mcp/brands

set-location-opening-hoursÄndert DatenWiederholbarErsetzt die wöchentlichen Öffnungszeiten eines Standorts.
Fragen Sie zum Beispiel

“Öffne werktags von 6:00 bis 23:00 und am Wochenende von 8:00 bis 20:00.”

Agentenansicht
{
  "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-exceptionÄndert DatenWiederholbarSchließt einen Standort an einem Datum oder legt Sonderzeiten dafür fest.
Fragen Sie zum Beispiel

“Schließe Via Roma am 25. Dezember.”

Agentenansicht
{
  "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-hoursÄndert DatenWiederholbarKopiert die Wochenzeiten von einem anderen Standort derselben Marke.
Fragen Sie zum Beispiel

“Gib Corso Italia dieselben Zeiten wie Via Roma.”

Agentenansicht
{
  "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
  }
}

Öffentliches Verzeichnis3mcp/directory

search-facilitiesNur lesendWiederholbarSucht öffentliche Sportstätten nach Ort, Disziplin, Ausstattung oder Name.
Fragen Sie zum Beispiel

“Finde ein 24/7-Studio mit Powerlifting in Parma.”

Agentenansicht
{
  "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-facilityNur lesendWiederholbarLiest eine öffentliche Sportstätte: Adresse, Öffnungszeiten, Ausstattung, Disziplinen und kommende Events.
Fragen Sie zum Beispiel

“Hat das Studio am Sonntagmorgen geöffnet?”

Agentenansicht
{
  "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-areasNur lesendWiederholbarListet Regionen, Provinzen und Städte mit Verzeichnisseiten, die größten zuerst.
Fragen Sie zum Beispiel

“Welche Städte in der Lombardei haben gelistete Studios?”

Agentenansicht
{
  "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
  }
}

Was ein Tool ändern darf, folgt Ihrer Rolle in der Marke. Ein Agent, den eine Rezeptionistin freigegeben hat, kann keinen Standort löschen.

Testen Sie das Verzeichnis. Genau hier.

Dieses Feld sendet dieselbe Anfrage, die Ihr Agent an den öffentlichen Directory-Server sendet. Echte Daten, kein Token, nichts zu installieren.

Beispiele
AnfragePOST /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
    }
  }
}
Antwort

Wählen Sie ein Beispiel oder tippen Sie eine Suche, dann senden Sie sie.

Verbinden Sie Ihren Client.

Wählen Sie Ihren Assistenten und den Server. Kopieren Sie das Snippet und legen Sie los.

Führen Sie das in Ihrem Terminal aus.
claude mcp add --transport http jymbro-brands https://jymbro.app/mcp/brands
Beim ersten Aufruf öffnet Ihr Client Jymbro im Browser. Melden Sie sich an und geben Sie den Agenten frei.Verbundene Agenten

Ihr Agent arbeitet innerhalb Ihrer Rechte.

Ein Agent bekommt keinen Generalschlüssel. Er kann, was Sie können, und muss vor allem anhalten, was sich nicht rückgängig machen lässt.

  • Ihre Rolle bei jedem Aufruf

    Jedes Tool prüft in dieser Marke die Rolle der Person, die den Agenten freigegeben hat. Eine Managerin kann Öffnungszeiten setzen, aber keinen Admin einladen.

  • Löschen fragt zuerst

    Ein Teammitglied entfernen oder einen Standort löschen braucht ein ausdrückliches Ja. Der Agent muss Sie fragen, bevor er es sendet.

  • Eigener Zugang

    Agenten-Tokens erreichen nur den MCP-Server. Sie funktionieren nicht für die App-API, die Rezeption oder die Scanner.

  • Kurzlebige Tokens

    Ein Agenten-Token gilt eine Stunde. Der Agent erneuert es im Hintergrund, bis Sie ihn trennen.

  • Mit einem Klick trennen

    Trennen Sie den Agenten in Ihren Kontoeinstellungen. Sein nächster Aufruf schlägt fehl.

  • Öffentlich heißt öffentlich

    Der Directory-Server sieht nur, was die öffentlichen Seiten der Sportstätten zeigen. Keine E-Mails, keine Mitglieder, kein Personal.

Fragen zum MCP-Server

Was ist der Jymbro MCP-Server?

Er verbindet einen KI-Assistenten mit Jymbro, auf Basis des Model Context Protocol (MCP). Mit dem Brands-Server verwaltet ein Markenteam Marken, Standorte, Öffnungszeiten, Disziplinen und das Team. Mit dem Directory-Server durchsucht jeder Agent das öffentliche Verzeichnis von Fitnessstudios und Sportstätten.

Mit welchen KI-Assistenten funktioniert er?

Jeder MCP-Client, der Remote-Server über Streamable HTTP mit OAuth-Anmeldung unterstützt, zum Beispiel Claude Code, Cursor, VS Code, claude.ai und ChatGPT. Der Directory-Server braucht keine Anmeldung.

Wie verbinde ich einen Agenten?

Fügen Sie die Serveradresse in Ihren Client ein. Beim ersten Aufruf öffnet er Jymbro im Browser: Melden Sie sich an und geben Sie den Agenten frei. Es gibt keinen Token zum Kopieren.

Kann der Agent selbst etwas löschen?

Nein. Die zwei Tools, die Daten entfernen, Teammitglied entfernen und Standort löschen, laufen nur mit einer ausdrücklichen Bestätigung, und der Agent muss Sie danach fragen. Auch jede andere Änderung folgt Ihrer Rolle in der Marke.

Wie stoppe ich einen Agenten?

Öffnen Sie „Verbundene Agenten“ in Ihren Kontoeinstellungen und trennen Sie ihn. Der nächste Aufruf dieses Agenten schlägt fehl.

Was sieht der Directory-Server?

Nur, was die öffentlichen Seiten der Sportstätten zeigen: Name, Adresse, Öffnungszeiten, Ausstattung, Disziplinen, öffentliche Events und die Seiten-URL. Nichts, was ein Markenteam privat hält.

Geben Sie Ihrem Assistenten die Schlüssel zur Rezeption.

Eine URL einfügen, anmelden und die erste Änderung anfordern. Sie behalten jeden Schritt in der Hand.