# Ejemplo final a final

Esta página muestra el flujo de trabajo completo con cada control de Maetra habilitado. Usted no necesita cada paso para cada integración: Task Guard y Secure son opcionales, y los recibos de ejecución son para equipos que quieren conectar una aprobación a la solicitud exacta del proveedor y el resultado observado.

El ejemplo inicializa la sesión de MCP, descubre herramientas dependientes de la capacidad, obtiene un acceso token, inicia una tarea de Task Guard, comprueba una acción material, corre Secure y Govern, registra el resultado y completa la tarea.

Reemplazamiento `https://mcp.maetra.io` con tu [desplegable MCP host](https://maetra.io/es/docs/mcp-server/overview-and-connection).

### 1. Inicializar

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

La respuesta incluye instrucciones de servidor para las capacidades habilitadas en el espacio de trabajo.

### 2. Herramientas de Discover

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

El resultado siempre incluye `get_mcp_access`, entonces incluye sólo las herramientas de Task Guard, Secure y Govern permitidas para el espacio de trabajo actual y la clave.

### 3. Obtener acceso a la capacidad

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

Leer `structuredContent.mcp_access_token`, `expires_at`, y las capacidades habilitadas. Los ejemplos que se indican a continuación utilizan `<ACCESS_TOKEN>` por ese valor de vida corta.

Call `get_mcp_access` una vez más al comienzo de cada nuevo giro del usuario o ciclo de trabajo.

### 4. Comiencen la tarea de Task Guard

Si Task Guard está habilitada:

```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"
    }
  }
}
```

Retener el ancla y el anclaje de tareas devueltos `contract_version`.

### 5. Ajuste de la tarea de verificación

Antes de la acción material:

```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"
    }
  }
}
```

Procede sólo para `ALIGNED` o `SUPPORTING`. Explicación `NEEDS_EXPLANATION`, pregunte la línea de usuario para `USER_CONFIRMATION_REQUIRED`, contexto refrescante para `CONTEXT_REFRESH_REQUIRED`, y replan o paran para `REFOCUS` o `STOPPED`.

### 6. Corre Secure

Si Secure está habilitada, escanee la llamada de la herramienta antes de la ejecución:

```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\"}"
    }
  }
}
```

No proceda cuando Secure regrese `blocked`. Examen `flagged` según tu flujo de trabajo.

### 7. Solicitar la aprobación de Govern

Si Govern está habilitada:

```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 el resultado es `pending`, votación:

```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
    }
  }
}
```

Sigue encuestando hasta la terminal. Parar a menos que el resultado sea `approved`. La aprobación no es la llamada del proveedor: el siguiente paso consume esa aprobación para una ejecución exacta.

### 8. Autorizar la ejecución exacta

Inmediatamente antes de llamar al proveedor de facturación:

```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"
      }
    }
  }
}
```

Retened el devuelto `executionId`. Sólo ahora envía esa solicitud exacta al proveedor. Repetir esta autorización con la misma solicitud clave e idéntica devuelve la recepción existente; cambiar los conflictos de solicitud.

### 9. Grabar el intento del proveedor

Después de que el proveedor responda:

```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"
    }
  }
}
```

Para un tiempo de salida o fracaso, use `failed` o `unknown`. Un proveedor idéntico se mantiene bajo el mismo ID de ejecución y utiliza el número de intento `2`.

### 10. Grabar el efecto de ejecución observado

Lea el proveedor resultante o estado del libro mayor, después adjuntelo a la misma ejecución:

```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"
    }
  }
}
```

Este ejemplo utiliza `self_reported`, por lo que el recibo permanece explícitamente `unverified`. Uso `provider_signed`, `ledger_readback`, u otro método independiente sólo cuando se configura el verificador de prueba correspondiente.

### 11. Informe el efecto a Task Guard

Cuando Task Guard reporte de efectos está habilitado:

```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` es falso, pregunte la línea de usuario de la sesión antes de ampliar más.

### 12. Completar la tarea

```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"
    }
  }
}
```

### Batching

Usted puede conseguir solicitudes independientes de JSON-RPC tales como `initialize` y `tools/list`. No lo hagas. `get_mcp_access` con llamadas de capacidad que necesitan su token devuelto. No entregues secuencialmente Task Guard, Secure, Govern, ejecución y pasos de reportaje de efectos cuyos insumos o permiso dependen del resultado anterior.