RÉFÉRENCE DÉVELOPPEUR · GENOS.MCP/V1

Utiliser l’API.
En connaître les limites.

Guide pratique des interfaces REST et MCP de GenOS, établi à partir des contrats source. Le serveur GenOS applique l’authentification, le scope tenant et les permissions d’outil.

Chemin d’une requêteclient → authentification → scope tenant → permissions et politiques → transport MCP → résultat structuré
01 / SECURITY

Authentification et scope

Envoyez un jeton d’accès GenOS dans Authorization: Bearer. L’exécution MCP exige mcp:execute_safe et un scope explicite comprenant une organisation et un projet. Envoyez les deux en-têtes tenant; les identifiants doivent correspondre et le principal authentifié doit y être autorisé.

Authorization: Bearer <access-token>
X-Organization-Id: <organization-id>
X-Project-Id: <project-id>
02 / BROWSER CLIENTS

Accès navigateur et CORS

GenOS vérifie les origines navigateur à partir de sa liste par défaut et de GENOS_ALLOWED_ORIGINS. Ajoutez l’origine exacte du site public à ce paramètre avant une connexion depuis un navigateur. Ne faites pas transiter un jeton partagé par le serveur web public.

GENOS_ALLOWED_ORIGINS=https://genos.work
03 / MCP EXECUTION

Exécuter un outil MCP

L’enveloppe HTTP accepte toolName ou tool_name et timeoutMs ou timeout_ms. Les arguments de l’outil doivent respecter son schéma JSON; leurs noms canoniques sont en snake_case. L’exemple lance une orchestration locale supervisée et attend son résultat.

curl --request POST "$GENOS_URL/api/mcp/execute" \
  --header "Authorization: Bearer $GENOS_TOKEN" \
  --header "X-Organization-Id: $GENOS_ORG" \
  --header "X-Project-Id: $GENOS_PROJECT" \
  --header "Content-Type: application/json" \
  --data '{"toolName":"genos_orchestrate","args":{"mission":"Summarize the approved task","executor":"local","background":false},"timeoutMs":60000}'
04 / DISCOVERY AND TEST

Découvrir outils et schémas

Ces routes de lecture et d’exécution contrôlée servent à lister les outils, obtenir leurs schémas d’arguments ou les essayer via le transport MCP configuré. Un appel de test réussi peut exécuter le véritable outil aval.

RoutePermissionRôle / comportement
GET /api/toolsread

Liste les outils visibles.

GET /api/tools/:name/schemaread

Retourne le schéma d’entrée courant.

POST /api/tools/testmcp:execute_safe + scope tenant

Teste via le transport MCP configuré.

POST /api/tools/dry-runmcp:execute_safe

Simule l’outil dans l’état VFS fourni; ce n’est pas un appel d’exécution.

POST /api/mcp/executemcp:execute_safe + scope tenant

Exécute l’outil si le registre et les politiques l’autorisent.

05 / TOOL CONTRACT

Arguments de genos_orchestrate

Ce schéma dépend de la version; récupérez le schéma courant avant d’utiliser des champs facultatifs. Le petit exemple fixe l’exécuteur local et l’exécution au premier plan.

{
  "mission": "string (required)",
  "worker_assignments": "optional",
  "strategy": "optional",
  "background": false,
  "executor": "local",
  "provider": "optional",
  "modelId": "optional"
}
06 / WIRE FORMAT

Conventions des protocoles

Les arguments MCP utilisent snake_case. L’enveloppe REST accepte temporairement camelCase pour ses deux champs seulement. N’envoyez pas deux alias avec des valeurs contradictoires. La version MCP est genos.mcp/v1.

{
  "toolName": "genos_replay",
  "args": { "snapshot_id": "snap-example" },
  "timeoutMs": 30000
}
07 / ERROR HANDLING

Réponses et erreurs

Vérifiez le statut HTTP et le corps propre à l’outil. REST n’emploie pas une enveloppe de succès unique. Une erreur peut contenir error.code, error.message, requestId, traceId et details.

Statut courantSens
400Requête ou arguments invalides
401Jeton absent ou invalide
403Permission, scope ou politique refusé
404Route ou outil introuvable
429Limitation de débit
502Transport MCP aval en échec
503Service, outil ou garde-fou indisponible
504Délai dépassé
{
  "error": {
    "code": "ZERO_TRUST_DENIED",
    "message": "Tool execution denied.",
    "requestId": "req-example",
    "traceId": "trace-example"
  }
}
08 / OTHER SURFACES

Sondes et autres interfaces

Le service HTTP expose des sondes de santé légères. gRPC et la CLI Rust ont leurs propres contrats, distincts de REST et MCP; consultez la documentation source et les fichiers proto.

GET /healthz
GET /readyz
GET /livez
gRPC: 127.0.0.1:50051
MCP protocol: genos.mcp/v1
10 / OPERATOR CONTRACTS

Références d’intégration et d’exploitation

Chaque contrat est épinglé à la même révision V3. Vérifiez le schéma du runtime déployé avant un appel effectif.