---
title: "Approve an MCP app's sign-in request"
method: POST
path: "/api/v1/oauth/requests/{requestId}/approve"
tags: ["MCP apps"]
---

# Approve an MCP app's sign-in request

`POST /api/v1/oauth/requests/{requestId}/approve`

## Request

- Base URL: `http://localhost:8080`
- URL: `http://localhost:8080/api/v1/oauth/requests/{requestId}/approve`
- Auth: HTTP bearer

Connects the app to one project of the caller's organization with READ_ONLY or READ_WRITE access — the same scope an API key carries. Any member may grant READ_ONLY; READ_WRITE takes a role that may create an API key. Returns the URL to send the browser to, carrying the authorization code.

## Path parameters

- `requestId` string, uuid, required

## Request body

- McpConsentApproveRequest
  - `projectId` string, uuid, required
  - `scope` 'READ_WRITE' | 'READ_ONLY', required

## Response `200`

Approved; follow redirectUrl

## Other responses

- `403`: The caller's role may not grant READ_WRITE
- `404`: Request expired or answered, or project not found

---

[API](https://skmtc.dev/railhook/apis/railhook-api.md) · [All operations](https://skmtc.dev/railhook/apis/railhook-api/llms.txt) · [OpenAPI document](https://skmtc.dev/railhook/apis/railhook-api/revisions/4e2c76dfc33d?raw)
