---
canonical: "https://www.lyceegourdouleseurre94.fr/docs/"
language: "fr"
title: "Lycée Professionnel Gourdou Leseurre – API et agents IA"
description: "Documentation de l’API REST, des serveurs MCP, d’A2A et de l’authentification."
---

# Lycée Professionnel Gourdou Leseurre – API et agents IA

## Vue d’ensemble

API publique du site du lycée professionnel Gourdou-Leseurre. Accès gratuit, sans inscription ni clé API (free, no signup, no API key). L’API est en lecture seule : elle peut être appelée directement, sans bac à sable.

Points d'entrée : documentation https://www.lyceegourdouleseurre94.fr/docs/, OpenAPI https://www.lyceegourdouleseurre94.fr/openapi.json, MCP contenus https://www.lyceegourdouleseurre94.fr/mcp, MCP documentation https://www.lyceegourdouleseurre94.fr/mcp/docs, A2A https://www.lyceegourdouleseurre94.fr/.well-known/agent-card.json, Markdown https://www.lyceegourdouleseurre94.fr/index.md, vue agent https://www.lyceegourdouleseurre94.fr/?mode=agent, llms.txt https://www.lyceegourdouleseurre94.fr/llms.txt.

## API REST

Base https://www.lyceegourdouleseurre94.fr/wp-json. GET /wp/v2/posts, /wp/v2/posts/{id}, /wp/v2/pages, /wp/v2/pages/{id}, /wp/v2/categories, /wp/v2/search?search=…. Pagination page et per_page (max 100), totaux dans X-WP-Total et X-WP-TotalPages, champs limités avec _fields.

Exemple : curl "https://www.lyceegourdouleseurre94.fr/wp-json/wp/v2/search?search=stage"

## Serveur MCP

Streamable HTTP, POST JSON-RPC 2.0, réponses JSON. Contenus : https://www.lyceegourdouleseurre94.fr/mcp (search_content, get_content, list_recent_posts, list_pages, get_site_info). Documentation : https://www.lyceegourdouleseurre94.fr/mcp/docs (search_docs, get_doc). Cartes : https://www.lyceegourdouleseurre94.fr/mcp/server-card et https://www.lyceegourdouleseurre94.fr/mcp/docs/server-card. Les lots JSON-RPC (tableau de messages) sont acceptés.

## Agent A2A

Carte https://www.lyceegourdouleseurre94.fr/.well-known/agent-card.json. Endpoint JSON-RPC https://www.lyceegourdouleseurre94.fr/a2a, méthode message/send avec une partie texte ; réponse synchrone (message avec parties text et data).

## Authentification

Aucune authentification n'est requise pour lire les contenus publiés. Pour obtenir un jeton : identité anonyme (POST https://www.lyceegourdouleseurre94.fr/agent/identity puis échange jwt-bearer au token endpoint, scope content:read) ou OAuth 2.1 + PKCE pour l'équipe (scope content:read_private, lecture seule). Guide complet : https://www.lyceegourdouleseurre94.fr/auth.md

## Erreurs

Toujours en JSON. REST WordPress : {"code","message","data":{"status"}}. Chemins /api, /docs, /oauth, /.well-known : {"error":{"status","code","message","hint","documentation"}}. OAuth : {"error","error_description"} (RFC 6749). MCP et A2A : erreurs JSON-RPC 2.0.

## Limites de débit

120 requêtes par minute et par adresse IP sur l'API REST et les endpoints d'agents. Chaque réponse porte RateLimit-Policy et RateLimit (draft IETF) ainsi que X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. Au-delà : 429 rate_limited avec Retry-After (secondes).

## Lot (batch)

POST https://www.lyceegourdouleseurre94.fr/api/batch avec {"requests":[{"method":"GET","path":"/wp/v2/pages?slug=contact"}, …]} : jusqu'à 25 requêtes GET de l'API REST, réponse {"responses":[{"index","status","body"}]}. Accepte Idempotency-Key.

## Idempotence

Les POST (/mcp, /mcp/docs, /a2a, /api/batch, /oauth/register) acceptent l'en-tête Idempotency-Key : même clé et même corps dans les 24 h, la réponse enregistrée est rejouée (Idempotent-Replayed: true) ; corps différent, 422 idempotency_key_reused.

## Bac à sable / test

L'API est entièrement en lecture seule : aucun appel ne peut modifier les contenus du site, l'environnement de production sert donc de bac à sable. Les seules écritures (enregistrement d'un client OAuth, identité anonyme) créent des données temporaires sans effet sur le site. Pour tester l'authentification sans compte, utilisez l'identité anonyme (https://www.lyceegourdouleseurre94.fr/agent/identity).

## Markdown

Ajoutez .md à l'URL de n'importe quelle page ou actualité (ex. https://www.lyceegourdouleseurre94.fr/les-filieres.md) ; accueil : https://www.lyceegourdouleseurre94.fr/index.md ; cette documentation : https://www.lyceegourdouleseurre94.fr/docs.md. Négociation de contenu : une requête avec Accept: text/markdown sur n'importe quelle page reçoit sa version Markdown (Vary: Accept). Chaque document commence par un frontmatter (title, description, canonical, last_updated).

## Versions et dépréciation

L'API REST est versionnée dans l'URL (/wp/v2, version stable de WordPress). Les endpoints propres au site (/mcp, /a2a, /api/batch, /ask, /agent/identity) suivent la version 1.0.0 indiquée dans l'OpenAPI. Une modification incompatible n'est jamais faite sans préavis : l'ancien comportement reste disponible au moins 3 mois, les réponses concernées portent alors les en-têtes Deprecation (RFC 9745) et Sunset (RFC 8594) avec la date de retrait, et le changement est annoncé dans cette documentation.

## NLWeb /ask

Question en langage naturel : GET https://www.lyceegourdouleseurre94.fr/ask?query=portes%20ouvertes ou POST {"query":"…"}. Réponse JSON {"_meta":{"response_type":"list","version":"0.1"},"results":[{"url","name","site","score","description","schema_object"}]}. Avec prefer.streaming=true (ou Accept: text/event-stream) : flux SSE avec les événements start, result et complete.

## WebMCP

Les pages HTML enregistrent les outils du MCP de contenus via document.modelContext.registerTool() (repli navigator.modelContext), plus open_page pour naviguer. Les formulaires de recherche et de contact portent toolname et tooldescription.
