---
title: "Oauth Connected Client Revoke"
method: POST
path: "/oauth/connected-clients/revoke"
---

# Oauth Connected Client Revoke

`POST /oauth/connected-clients/revoke`

## Request

- Base URL: `https://api.local-mcp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.local-mcp.com/oauth/connected-clients/revoke`
- Auth: none declared

lmcp-api#83: the tray's per-AI "Disconnect" (lmcp-mac#307, lmcp-win#247; 3.0.419).

Authenticated by the machine's OWN cloud token in `Authorization: Bearer <cloud_token>` (never
in the URL). Disconnects ONE AI (`client_id`, as listed by GET /oauth/connected-clients) from
THIS machine: its per-AI access tokens stop working (within 30 s on every replica, at once on
the one that answered) and its refresh tokens are deleted, so it must re-authorize — through
the Approve dialog — to come back. Other AIs and the machine's relay are untouched.

200 {"revoked": true, "client_id", "access_tokens_revoked", "refresh_tokens_deleted"}
(+ "residual_access": "none" | "machine_token" — see the return below)
400 {"error": "invalid_request"}  — no client_id
401 {"error": "invalid_token"}    — missing/unknown/revoked machine token
404 {"error": "not_connected"}    — that AI holds nothing on this machine

## Request body

- ConnectedClientRevoke
  - `client_id` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/local-mcp/apis/lmcp-api.md) · [All operations](https://skmtc.dev/local-mcp/apis/lmcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/local-mcp/apis/lmcp-api/revisions/f1f1c502623a?raw)
