---
title: "Post Op"
method: POST
path: "/v1/op"
tags: ["api"]
---

# Post Op

`POST /v1/op`

## Request

- Base URL: `https://mcp.sentinelx.app` (the document declares no server; this is the origin it was published from)
- URL: `https://mcp.sentinelx.app/v1/op`
- Auth: none declared

Authenticate an API key and run one op through the shared ``forward()``.

``client_request_id`` is optional. When present it creates an at-most-once
execution boundary in Redis: an identical retry replays the stored response,
a conflicting reuse is rejected, and concurrent duplicates cannot both run.
Every authenticated request also gets a Hub-generated ``hub_request_id`` for
correlation across response + audit.

## Request body

- OpRequest: Body of ``POST /v1/op`` — the same triple an MCP tool resolves to.
  - `op` string, required
  - `host_id` string, nullable
  - `payload` object
  - `client_request_id` string, nullable: Optional caller-generated idempotency key. Reusing it with the same logical request replays the prior result without re-executing; reusing it with different op/host/payload is rejected.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sentinelx/apis/sentinelx-hub.md) · [All operations](https://skmtc.dev/sentinelx/apis/sentinelx-hub/llms.txt) · [OpenAPI document](https://skmtc.dev/sentinelx/apis/sentinelx-hub/revisions/d1f84924795e?raw)
