MCP et clients IA
Un agent qui se connecte à Sporty n'a aucun humain sous la main pour remplir d'abord un formulaire d'enregistrement ; Sporty prend donc en charge l'enregistrement dynamique des clients selon la RFC 7591. Un client s'enregistre lui-même, puis suit le flux du code d'autorisation habituel.
403 access_denied, et la solution consiste alors à utiliser un client enregistré
par un administrateur de club.S'enregistrer
curl -X POST https://api.sporty.plus/oauth2/register \
-H 'Content-Type: application/json' \
-d '{
"client_name": "My Agent",
"redirect_uris": ["http://127.0.0.1:8976/callback"],
"client_uri": "https://myagent.example",
"contacts": ["you@example.com"]
}'
{
"client_id": "01a09ad5-1469-7260-8157-bba3655a2fdf",
"client_id_issued_at": 1789304059,
"client_name": "My Agent",
"redirect_uris": ["http://127.0.0.1:8976/callback"],
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"token_endpoint_auth_method": "none",
"scope": "openid profile email me.read me.reservations.read"
}
Il n'y a pas de client_secret : un client auto-enregistré est public, et c'est PKCE qui le
protège. Les URI de redirection de bouclage (loopback) sont autorisées précisément pour ce cas,
et le port est ignoré lors de la comparaison.
La découverte pour un client OAuth classique se trouve à
https://api.sporty.plus/.well-known/oauth-authorization-server, et la ressource que vous
cherchez à atteindre est décrite à /.well-known/oauth-protected-resource.
Les limites d'un client auto-enregistré
Tout cela est délibéré, et rien n'est négociable au cas par cas :
- Public et PKCE uniquement. Il n'existe aucun secret susceptible de fuiter.
authorization_codeetrefresh_tokenuniquement. Jamaisclient_credentials— un agent n'agit jamais sans membre présent.openid,profile,emailetme.*uniquement. Il ne peut jamais demander les données d'un club. Une intégration qui a besoin declub.*doit être enregistrée par un administrateur de club. Tous les scopesme.*sont disponibles (sur/me) :- le profil du membre ;
- ses réservations, ainsi que la réservation ou l'annulation d'un court pour lui ;
- ses résultats de matchs ;
- ses clubs et ses adhésions.
Un agent qui réserve pour un membre doit lui montrer le prix. Lorsqueneeds_paymentvaut true, il doit lui indiquer qu'il paie dans l'application Sporty.- Le consentement n'est jamais ignoré, même pour un membre qui l'a déjà donné.
- Des jetons de courte durée — quinze minutes, renouvelables pendant une journée.
- Un enregistrement limité en fréquence, quelques-uns par heure et par adresse.
En attente d'examen
Un client auto-enregistré est en attente, et un client en attente fonctionne uniquement pour le compte qui l'a enregistré.
C'est ce qui rend l'enregistrement ouvert sûr plutôt qu'inquiétant : vous pouvez développer et tester tout le flux immédiatement, et tant que nous n'avons pas examiné votre application, aucun autre compte ne lui est accessible. Le membre est également informé, sur l'écran de consentement, que l'application n'a pas été examinée.
Lorsque vous voulez la rendre accessible à d'autres personnes, contactez-nous. L'examen est une conversation sur ce que fait votre agent et sur les scopes dont il a réellement besoin, pas un formulaire.