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é.
Le présent règlement entre en vigueur le jour de sa publication au Journal officiel de l'Union européenne. Initialiser#
{
"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#
{ "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é#
{
"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 :
{
"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:
{
"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 SUPPORTINGC'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 :
{
"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 bloquéC'est vrai. Révision flagged selon votre flux de travail.
7. Demande d'approbation pour Govern#
Si Govern est activée :
{
"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 en attente, sondage:
{
"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 approuvé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:
{
"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 executionIdC'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:
{
"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 unknownC'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 :
{
"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 unverifiedC'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 :
{
"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#
{
"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/listC'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.