# Exemple de bout en bout

Cette page affiche le flux de travail complet avec chaque contrôle Maetra activé. Vous n'avez pas besoin de chaque étape pour chaque intégration : Task Guard et Secure sont optionnels, et les reçus d'exécution sont pour les équipes qui veulent connecter une approbation à la demande exacte du fournisseur et le résultat observé.

L'exemple initialise la session MCP, découvre des outils dépendants de la capacité, obtient un jeton d'accès, commence une tâche Task Guard, vérifie une action matérielle, dirige Secure et Govern, enregistre le résultat et complète la tâche.

Remplacer `https://mcp.maetra.io` avec votre [l'hôte MCP déployé](https://maetra.io/fr/docs/mcp-server/overview-and-connection).

### Le présent règlement entre en vigueur le jour de sa publication au Journal officiel de l'Union européenne. Initialiser

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": { "name": "billing-bot", "version": "0.1.0" }
  }
}
```

La réponse inclut les instructions du serveur pour les capacités activées dans l'espace de travail.

### 2. Outils Discover

```json
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }
```

Le résultat inclut toujours `get_mcp_access`, comprend alors seulement les outils Task Guard, Secure, et Govern permis pour l'espace de travail actuel et la clé.

### 3. Le Comité des droits de l'homme Obtenir un accès à la capacité

```json
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "get_mcp_access",
    "arguments": {}
  }
}
```

Lire `structuredContent.mcp_access_token`, `expires_at`, et les capacités activées. Les exemples ci-dessous `<ACCESS_TOKEN>` pour cette valeur de courte durée.

Appeler `get_mcp_access` à nouveau au début de chaque nouveau tour d'utilisateur ou cycle de travail.

### 4. L'Agence européenne pour l'environnement Commencez la tâche Task Guard

Si Task Guard est activée :

```json
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "start_task",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "session_ref": "conversation_01JY8Q",
      "objective": "Process the approved customer refund.",
      "constraints": ["Do not modify unrelated customer records."],
      "success_criteria": ["Refund is processed and recorded."],
      "in_scope": ["Validate refund", "Request approval", "Execute refund"],
      "out_of_scope": ["Change billing provider configuration"],
      "agent_name": "billing-bot",
      "host_type": "CUSTOM_MCP",
      "confirmation_capable": true,
      "effect_reporting_capable": true,
      "idempotency_key": "task-start-01JY8Q"
    }
  }
}
```

Conserver l'ancre de tâche retournée et `contract_version`.

### 5. Vérifier l'alignement des tâches

Avant l'action matérielle:

```json
{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "check_task_alignment",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "session_ref": "conversation_01JY8Q",
      "action": "Submit a $5,000 refund to the billing provider",
      "action_type": "execute",
      "effect": "TRANSFER",
      "effects": ["Transfer $5,000 to the customer"],
      "tool_name": "billing_api",
      "operation": "create_refund",
      "contract_version": 1,
      "external_action_id": "refund-action-01JY8V",
      "idempotency_key": "alignment-01JY8V",
      "provenance": "HOST_VERIFIED"
    }
  }
}
```

Procéder uniquement pour `ALIGNED` ou `SUPPORTING`C'est vrai. Expliquer `NEEDS_EXPLANATION`, demandez à l'utilisateur en ligne pour `USER_CONFIRMATION_REQUIRED`, rafraîchir le contexte pour `CONTEXT_REFRESH_REQUIRED`, et replanifier ou arrêter pour `REFOCUS` ou `STOPPED`.

### 6. Exécutez Secure

Si Secure est activée, scannez l'appel de l'outil avant l'exécution :

```json
{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "check_action",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "scan_type": "tool_call",
      "tool_name": "billing_api",
      "agent_name": "billing-bot",
      "content": "{\"operation\":\"create_refund\",\"amount\":5000,\"currency\":\"USD\"}"
    }
  }
}
```

Ne pas procéder quand Secure revient `blocked`C'est vrai. Révision `flagged` selon votre flux de travail.

### 7. Demande d'approbation pour Govern

Si Govern est activée :

```json
{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "request_approval",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "action": "transfer_funds",
      "agent_name": "billing-bot",
      "autonomy_level": "L3",
      "payload": { "amount": 5000, "currency": "USD", "to": "acct_9931" },
      "target": {
        "type": "customer_account",
        "id": "acct_9931",
        "provider": "northstar-billing"
      },
      "task_authorization": {
        "task_id": "<TASK_ID_FROM_START_TASK>",
        "revision_id": "<ACTIVE_TASK_REVISION_ID>",
        "external_action_id": "refund-action-01JY8V"
      },
      "runtime": {
        "tool_name": "billing_api",
        "tool_version": "4.2.0"
      },
      "executor_audience": "billing-worker",
      "idempotency_key": "refund-checkpoint-01JY8V",
      "reasoning": "Customer refund exceeds the auto-approve limit."
    }
  }
}
```

Si le résultat est `pending`, sondage:

```json
{
  "jsonrpc": "2.0",
  "id": 8,
  "method": "tools/call",
  "params": {
    "name": "get_approval_status",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "checkpoint_id": "cp_7Yh2Qa",
      "wait_seconds": 30
    }
  }
}
```

Continuez le scrutin jusqu'au terminal. Arrêter sauf si le résultat est `approved`C'est vrai. L'approbation n'est pas l'appel du fournisseur : l'étape suivante consomme cette approbation pour une exécution précise.

### 8. Autoriser l'exécution exacte

Immédiatement avant d'appeler le fournisseur de facturation:

```json
{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "tools/call",
  "params": {
    "name": "authorize_execution",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "checkpoint_id": "cp_7Yh2Qa",
      "idempotency_key": "refund-execution-01JY8V",
      "provider": "northstar-billing",
      "operation": "refunds.create",
      "request": {
        "amount": 5000,
        "currency": "USD",
        "customer_account": "acct_9931"
      }
    }
  }
}
```

Conserver le retour `executionId`C'est vrai. Seulement maintenant envoyer cette demande exacte au fournisseur. Répéter cette autorisation avec la même clé et la même demande renvoie le reçu existant; changer les conflits de demande.

### 9. Enregistrez la tentative du fournisseur

Après la réponse du fournisseur:

```json
{
  "jsonrpc": "2.0",
  "id": 10,
  "method": "tools/call",
  "params": {
    "name": "record_execution_attempt",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "execution_id": "exec_01JY91",
      "attempt_number": 1,
      "request": {
        "amount": 5000,
        "currency": "USD",
        "customer_account": "acct_9931"
      },
      "response": {
        "refund_id": "rf_10492",
        "status": "succeeded"
      },
      "status": "succeeded",
      "provider_status": "201",
      "provider_transaction_id": "rf_10492",
      "started_at": "2026-08-12T09:15:02Z",
      "completed_at": "2026-08-12T09:15:03Z"
    }
  }
}
```

Pour un délai ou une défaillance, utiliser `failed` ou `unknown`C'est vrai. Un fournisseur identique réessayer reste sous le même ID d'exécution et utilise le numéro de tentative `2`.

### 10. Enregistrer l'effet d'exécution observé

Lisez l'état du fournisseur ou du grand livre, puis attachez-le à la même exécution :

```json
{
  "jsonrpc": "2.0",
  "id": 11,
  "method": "tools/call",
  "params": {
    "name": "record_execution_effect",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "execution_id": "exec_01JY91",
      "observation": {
        "refund_id": "rf_10492",
        "amount": 5000,
        "currency": "USD",
        "status": "succeeded"
      },
      "observed_at": "2026-08-12T09:15:05Z",
      "verification_method": "self_reported",
      "provider": "northstar-billing",
      "external_reference": "rf_10492"
    }
  }
}
```

Cet exemple utilise `self_reported`, donc le reçu reste explicitement `unverified`C'est vrai. Utilisation `provider_signed`, `ledger_readback`, ou une autre méthode indépendante seulement lorsque le vérificateur d'épreuve correspondant est configuré.

### 11. Signaler les effets à Task Guard

Lorsque la déclaration de l'effet Task Guard est activée :

```json
{
  "jsonrpc": "2.0",
  "id": 12,
  "method": "tools/call",
  "params": {
    "name": "record_action_effect",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "check_id": "tgc_01JY8W",
      "actual_effect": "TRANSFER",
      "actual_effects": ["Transferred $5,000 to customer account acct_9931"],
      "summary": "The approved refund completed successfully.",
      "validation_outcome": "Billing provider returned succeeded."
    }
  }
}
```

Si `effect_aligned` est faux, demandez à l'utilisateur de session en ligne avant d'étendre plus loin.

### 12. Le Conseil de l'Europe a adopté une résolution. Terminer la tâche

```json
{
  "jsonrpc": "2.0",
  "id": 13,
  "method": "tools/call",
  "params": {
    "name": "complete_task",
    "arguments": {
      "mcp_access_token": "<ACCESS_TOKEN>",
      "session_ref": "conversation_01JY8Q",
      "summary": "The approved refund was processed and recorded.",
      "completion_event_id": "complete-01JY9Z"
    }
  }
}
```

### Abattage

Vous pouvez loter les demandes indépendantes JSON-RPC telles que `initialize` et `tools/list`C'est vrai. Ne pas faire par lots `get_mcp_access` avec des appels de capacité qui ont besoin de son jeton retourné. Ne pas loter les étapes séquentielles Task Guard, Secure, Govern, l'exécution et les rapports d'effets dont les entrées ou la permission dépendent du résultat précédent.