post_orgs_by_id_suspend

Changes data · you confirm first

Calls POST /api/orgs/{id}/suspend as the signed-in person · REST reference

Suspend an organization

Platform staff only (there is no dedicated org-suspend command permission). Sets status to 'SUSPENDED' and saves. No per-organization check, as on /approve. Org.suspend accepts a suspension reason and records it on metadata.suspendReason, but THIS ROUTE NEVER PASSES ONE — it calls org.suspend() with no arguments, so any reason in the request body is discarded.

Arguments

ArgumentTypeDescription
idpathstring (uuid)required
bodyJSONobjectThe request body, as a JSON object. Its fields are listed below.

Fields of body

FieldTypeDescription
reasonstringIgnored — the handler passes no reason through to the model.

Example call

A client sends this over the MCP session; Claude and other agents build it for you. The values are placeholders — the shape is real.

json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "post_orgs_by_id_suspend",
    "arguments": {
      "id": "11111111-1111-4111-8111-111111111111",
      "body": {
        "reason": "string"
      }
    }
  }
}
Confirmation
The client shows the person the exact request and waits. Nothing runs until they tick Make this change. See Reading and changing.

Result

On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.

The organization after the status change, as the DAL answered the write — epoch millisecond timestamps, createdAt included, as on PATCH /api/orgs/{id}.

json
{
  "id": "11111111-1111-4111-8111-111111111111",
  "name": "string",
  "status": "SUSPENDED",
  "createdAt": 1
}

Fields

FieldTypeDescription
createdAtintegerEpoch milliseconds, straight off the DAL entity.
idstring (uuid)
namestring
status"SUSPENDED"

When it fails

A failed call returns isError: true with the API's message as text. A change the person declines, or lets time out, also comes back this way and nothing changes.

403

Authenticated, but the caller holds none of the required permissions.

404

No such resource — or none this caller may see.

What the model is shown

This is the tool exactly as the server lists it in tools/list. The description starts with the REST call it makes.

json
{
  "name": "post_orgs_by_id_suspend",
  "description": "POST /api/orgs/{id}/suspend — Platform staff only (there is no dedicated org-suspend command permission). Sets `status` to 'SUSPENDED' and saves. No per-organization check, as on `/approve`. `Org.suspend` accepts a suspension reason and records it on `metadata.suspendReason`, but THIS ROUTE NEVER PASSES ONE — it calls `org.suspend()` with no arguments, so any `reason` in the request body is discarded.\n\nThis changes data. The person is asked to confirm it before it runs, and nothing happens if they decline.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string"
      },
      "body": {
        "type": "string",
        "description": "The JSON request body: { reason: string (Ignored — the handler passes no reason through to the model.) }"
      }
    },
    "required": [
      "id"
    ]
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": true,
    "idempotentHint": false,
    "openWorldHint": false
  }
}