---
title: "OAuth ഉപയോഗിച്ച് കണക്റ്റുചെയ്യുക"
description: "API കീ പങ്കിടാതെ MCP ക്ലയന്റുകൾക്കും ThunderPhone CLI-ക്കും അനുമതി നൽകുക."
---

OAuth ഉപയോഗിച്ച്, നിങ്ങൾ അംഗീകരിക്കുന്ന അനുമതികളോടെ ഒരു ആപ്പിന് ഒരു ThunderPhone ഓർഗനൈസേഷനുമായി ബന്ധിപ്പിക്കാൻ കഴിയും. ഡയറക്ടറി ക്ലയന്റുകൾ ഡിഫോൾട്ടായി OAuth ഉപയോഗിക്കണം. മാനുവലായി കോൺഫിഗർ ചെയ്ത Bearer ടോക്കൺ ആവശ്യമായ ക്ലയന്റുകൾക്കായി ഓർഗനൈസേഷൻ API കീകൾ ലഭ്യമായി തുടരും.

## ഒരു കണക്ഷൻ അംഗീകരിക്കുക

നിങ്ങളുടെ MCP ക്ലയന്റിൽ കണക്ഷൻ ആരംഭിക്കുക. ThunderPhone-ൽ സൈൻ ഇൻ ചെയ്യുക, ആപ്പിന്റെ പേരും അഭ്യർഥിച്ച അനുമതികളും പരിശോധിക്കുക, ഒരു ഓർഗനൈസേഷൻ തിരഞ്ഞെടുക്കുക, തുടർന്ന് **അംഗീകരിക്കുക** തിരഞ്ഞെടുക്കുക. നിങ്ങൾ കണക്ഷൻ ആരംഭിച്ചിട്ടില്ലെങ്കിലോ ആപ്പിനെ വിശ്വസിക്കുന്നില്ലെങ്കിലോ **നിരസിക്കുക** തിരഞ്ഞെടുക്കുക. ആപ്പ് പേരുകൾ അവയുടെ ഡെവലപ്പർമാർ നൽകുന്നതാണ്; അവ ഒരു സ്ഥിരീകരണ ബാഡ്ജല്ല.

`calls:read` അഭ്യർഥിക്കുമ്പോൾ റെക്കോർഡിംഗുകളും ട്രാൻസ്ക്രിപ്റ്റുകളും ഉൾപ്പെടെ, വായനാ അനുമതികൾ പേരിട്ട ഡാറ്റ വെളിപ്പെടുത്തുന്നു. എഴുത്ത് അനുമതികൾക്ക് റിസോഴ്സുകൾ മാറ്റാനോ ഇല്ലാതാക്കാനോ കഴിയും; കോളുകൾ, കാമ്പെയ്‌നുകൾ, ഫോൺ വാങ്ങലുകൾ, ഡിപ്ലോയ്മെന്റുകൾ എന്നിവയ്ക്ക് ചെലവ് വരാനോ പ്രൊഡക്ഷനെ ബാധിക്കാനോ കഴിയും. നിങ്ങളുടെ ഓർഗനൈസേഷൻ റോൾ തുടർന്നും ബാധകമാണ്.

CLI കണക്ഷനായി, നിങ്ങളുടെ ടെർമിനലിൽ കാണിക്കുന്ന സ്ഥിരീകരണ ലിങ്ക് തുറക്കുക, എട്ട്-അക്ഷര കോഡ് താരതമ്യം ചെയ്യുക, നിങ്ങളുടെ ഓർഗനൈസേഷൻ തിരഞ്ഞെടുക്കുക, തുടർന്ന് അംഗീകരിക്കുക. ലിങ്ക് തുറക്കുന്നത് മാത്രം ആക്സസ് അനുവദിക്കില്ല. കോഡുകളുടെ കാലാവധി 15 മിനിറ്റിന് ശേഷം അവസാനിക്കും.

## ഒരു ആപ്പ് വിച്ഛേദിക്കുക

ഡാഷ്ബോർഡിൽ **ഓർഗനൈസേഷൻ → API കീകൾ → അംഗീകൃത ആപ്പുകൾ** തുറന്ന് **റദ്ദാക്കുക** തിരഞ്ഞെടുക്കുക. ഇത് നിലവിലെ ഓർഗനൈസേഷനായി നിങ്ങൾ തിരഞ്ഞെടുത്ത അംഗീകാരം, അതിന്റെ ആക്സസ്, റിഫ്രെഷ് ടോക്കണുകൾ ഉൾപ്പെടെ, റദ്ദാക്കുന്നു. വീണ്ടും അംഗീകരിക്കണമെങ്കിൽ ആപ്പിൽ നിന്ന് വീണ്ടും കണക്റ്റ് ചെയ്യുക.

## MCP ക്ലയന്റുകൾക്കായുള്ള ഡിസ്കവറി

സെർവർ URL `https://api.thunderphone.com/v1/mcp` ഉപയോഗിക്കുക. സാധുവായ ഓതന്റിക്കേഷൻ ഇല്ലാത്ത ഒരു അഭ്യർത്ഥനയ്ക്ക് ഇനിപ്പറയുന്നതോടെ `401` ലഭിക്കും:

```http
WWW-Authenticate: Bearer resource_metadata="https://api.thunderphone.com/.well-known/oauth-protected-resource"
```

ആ ഡോക്യുമെന്റ് ഫെച്ച് ചെയ്യുക, തുടർന്ന് `https://api.thunderphone.com/.well-known/oauth-authorization-server`-ലെ ഓതറൈസേഷൻ സെർവറിന്റെ മെറ്റാഡാറ്റ ഫെച്ച് ചെയ്യുക. റിസോഴ്സ് മെറ്റാഡാറ്റ `/.well-known/oauth-protected-resource/v1/mcp`-ലും ലഭ്യമാണ്. എൻഡ്പോയിന്റുകൾ നിർമിക്കുന്നതിനുപകരം ലഭിക്കുന്ന എൻഡ്പോയിന്റുകൾ ഉപയോഗിക്കുക. റിസോഴ്സ് ഐഡന്റിഫയർ `https://api.thunderphone.com/v1/mcp` ആണ്.

സെർവർ **S256 PKCE** സഹിതമുള്ള ഓതറൈസേഷൻ കോഡ്, റൊട്ടേറ്റ് ചെയ്യുന്ന റിഫ്രഷ് ടോക്കണുകൾ, പബ്ലിക് ഡൈനാമിക് ക്ലയന്റ് രജിസ്ട്രേഷൻ, റിവൊക്കേഷൻ, ഡിവൈസ് ഓതറൈസേഷൻ ഗ്രാന്റ് എന്നിവ പിന്തുണയ്ക്കുന്നു. ക്ലയന്റ് സീക്രട്ടുകളോ ഇംപ്ലിസിറ്റ് ഗ്രാന്റുകളോ ഇല്ല. OpenID ഡിസ്കവറി `/.well-known/openid-configuration`-ലും ലഭ്യമാണ്; അതിൽ അതേ ഓതറൈസേഷൻ-സെർവർ ഫീൽഡുകൾക്കും പുറമെ `subject_types_supported: ["public"]`, യൂസർഇൻഫോ എൻഡ്പോയിന്റ് എന്നിവയും ഉൾപ്പെടുന്നു. ID ടോക്കണുകളും Client ID Metadata Documents (CIMD)-ഉം പിന്തുണയ്ക്കുന്നില്ല.

### ഒരു പബ്ലിക് ക്ലയന്റ് രജിസ്റ്റർ ചെയ്യുക

`POST /v1/oauth/register`-ലേക്ക് JSON അയയ്ക്കുക:

```json
{
  "client_name": "My MCP client",
  "redirect_uris": ["http://127.0.0.1:8765/callback"],
  "token_endpoint_auth_method": "none",
  "grant_types": ["authorization_code", "refresh_token"],
  "response_types": ["code"]
}
```

ലഭിക്കുന്ന `client_id` സംരക്ഷിക്കുക. റീഡയറക്റ്റുകൾ HTTPS ഉപയോഗിക്കണം, അല്ലെങ്കിൽ `127.0.0.1`-ലോ `localhost`-ലോ HTTP ഉപയോഗിക്കാം. പോർട്ടും പാഥും ഉൾപ്പെടെ കൃത്യമായ കോൾബാക്ക് URI രജിസ്റ്റർ ചെയ്യുക. ഫ്രാഗ്മെന്റുകളും എംബെഡ് ചെയ്ത ക്രെഡൻഷ്യലുകളും നിരസിക്കും. ഓപ്ഷണലായ `client_uri`, `logo_uri` എന്നിവ HTTPS ഉപയോഗിക്കണം; രജിസ്ട്രേഷൻ സമയത്ത് ThunderPhone അവ ഫെച്ച് ചെയ്യില്ല. രജിസ്ട്രേഷന് നിരക്ക് പരിധിയുണ്ട്. രജിസ്റ്റർ ചെയ്ത ക്ലയന്റുകൾക്ക് കാലഹരണപ്പെടില്ല, കണക്ഷൻ റിവോക്ക് ചെയ്താലും രജിസ്റ്റർ ചെയ്ത നിലയിൽ തുടരും. HTTPS കോൾബാക്കുകളിൽ `https://chatgpt.com/connector/oauth/<id>`, `https://chatgpt.com/connector_platform_oauth_redirect` എന്നിവ ഉൾപ്പെടുന്നു. ഓരോ കണക്ഷനും അതിന്റേതായ ക്ലയന്റ് രജിസ്റ്റർ ചെയ്യാം.

### ഓതറൈസേഷൻ കോഡ്

കണ്ടെത്തിയ ഓതറൈസേഷൻ എൻഡ്പോയിന്റ് `client_id`, കൃത്യമായി രജിസ്റ്റർ ചെയ്ത `redirect_uri`, `response_type=code`, റാൻഡം `state`, `scope`, `code_challenge`, `code_challenge_method=S256`, `resource=https://api.thunderphone.com/v1/mcp` എന്നിവ ഉപയോഗിച്ച് തുറക്കുക. പുതിയ ഉയർന്ന-എൻട്രോപ്പിയുള്ള PKCE വെരിഫയറിന്റെ പാഡ്ഡിങ് ഇല്ലാത്ത base64url SHA-256 ഡൈജസ്റ്റ് ആയി ചലഞ്ച് കണക്കാക്കുക. കോഡ് എക്സ്ചേഞ്ച് ചെയ്യുന്നതിന് മുമ്പ് ലഭിക്കുന്ന `state`, `iss` എന്നിവ പരിശോധിക്കുക. നിരസിക്കലും പ്രോട്ടോക്കോൾ പിശകുകളും ഉൾപ്പെടെ എല്ലാ ഓതറൈസേഷൻ പ്രതികരണങ്ങളും കണ്ടെത്തിയ `issuer`-നോട് കൃത്യമായി പൊരുത്തപ്പെടുന്ന `iss` ഉപയോഗിച്ച് ഇഷ്യൂവറെ തിരിച്ചറിയിക്കുന്നു. അസാധുവായ ക്ലയന്റിനോ കോൾബാക്കിനോ ഉള്ള പിശകുകൾ ആ കോൾബാക്കിലേക്ക് റീഡയറക്റ്റ് ചെയ്യാതെ ലോക്കലായി ലഭിക്കും.

ഫോം എൻകോഡിങ് ഉപയോഗിച്ച് `POST /v1/oauth/token`-ൽ എക്സ്ചേഞ്ച് ചെയ്യുക (JSON-ഉം സ്വീകരിക്കും):

```text
grant_type=authorization_code
client_id=<your client id>
code=<single-use authorization code>
redirect_uri=<exact registered redirect URI>
code_verifier=<original PKCE verifier>
resource=https://api.thunderphone.com/v1/mcp
```

ഓപ്ഷണലായ `resource` പാരാമീറ്റർ ഓതറൈസേഷനും ടോക്കൺ അഭ്യർത്ഥനകൾക്കും (റിഫ്രഷ്, ഡിവൈസ് എക്സ്ചേഞ്ചുകൾ ഉൾപ്പെടെ) സ്വീകരിക്കും. അത് ഒഴിവാക്കിയാൽ, കണ്ടെത്തിയ MCP റിസോഴ്സാണ് ഡിഫോൾട്ട്. നൽകിയിട്ടുണ്ടെങ്കിൽ, അത് ആ റിസോഴ്സിനോട് കൃത്യമായി പൊരുത്തപ്പെടണം; മറ്റ് മൂല്യങ്ങൾക്ക് `invalid_target` ലഭിക്കും. ആക്സസ് ടോക്കണുകൾ ആ ഓഡിയൻസ് വഹിക്കുന്നു, ഓഡിയൻസ് ഇല്ലാത്തതോ വ്യത്യസ്ത ഓഡിയൻസുള്ളതോ ആയ ടോക്കണുകൾ MCP `401`, ഡിസ്കവറി ചലഞ്ച് എന്നിവയോടെ നിരസിക്കുന്നു.

ഓതറൈസേഷൻ അഭ്യർത്ഥനകളും കോഡുകളും 10 മിനിറ്റിന് ശേഷം കാലഹരണപ്പെടും. എല്ലാ ടോക്കൺ പ്രതികരണങ്ങളിലും `access_token`, `token_type` (`Bearer`), `expires_in` (ഡിഫോൾട്ടായി 3600 സെക്കൻഡ്), `refresh_token`, `scope`, `organization_id`, `organization_name` എന്നിവ അടങ്ങിയിരിക്കും. ആക്സസ് ടോക്കണുകൾ `Authorization: Bearer` ഹെഡറിലൂടെ മാത്രം അയയ്ക്കുക. URL-കളിലോ ലോഗുകളിലോ സോഴ്സ് കൺട്രോളിലോ ചാറ്റിലോ ഒരിക്കലും ടോക്കണുകൾ ഇടരുത്.

### റിഫ്രഷും റിവൊക്കും

ടോക്കൺ എൻഡ്പോയിന്റിൽ `grant_type=refresh_token`, `client_id`, `refresh_token`, `resource` എന്നിവ ഉപയോഗിച്ച് റിഫ്രഷ് ചെയ്യുക. പുതിയ റിഫ്രഷ് ടോക്കൺ ആറ്റോമിക്കായി സംരക്ഷിച്ച് പഴയത് ഉപയോഗിക്കുന്നത് നിർത്തുക. വിജയകരമായ റിഫ്രഷില്ലാതെ 30 ദിവസത്തിന് ശേഷം റിഫ്രഷ് ടോക്കണുകൾ കാലഹരണപ്പെടും. ഓപ്ഷണലായ `scope` അനുവദിച്ച പെർമിഷനുകൾ പരിമിതപ്പെടുത്താം. `offline_access` എപ്പോഴും ഉൾപ്പെടുന്നതാണ്, റിഫ്രഷ് ടോക്കണുകൾ എപ്പോഴും നൽകപ്പെടും. `scope` ഇല്ലാത്ത പ്രാരംഭ അഭ്യർത്ഥന `offline_access` മാത്രം അനുവദിക്കുന്നു, അതിനാൽ ക്ലയന്റുകൾക്ക് ആവശ്യമായ പെർമിഷനുകൾ അഭ്യർത്ഥിക്കണം.

കോഡ് പുനരുപയോഗവും റൊട്ടേറ്റ് ചെയ്ത റിഫ്രഷ് ടോക്കൺ പുനരുപയോഗവും മുഴുവൻ ഓതറൈസേഷനും റിവോക്ക് ചെയ്യും. ഒരു ക്ലയന്റിനുള്ളിൽ റിഫ്രഷുകൾ സീരിയലൈസ് ചെയ്യുക; വിജയകരമായി എക്സ്ചേഞ്ച് ചെയ്ത ക്രെഡൻഷ്യൽ വീണ്ടും പ്ലേ ചെയ്യുന്നത് സുരക്ഷിതമായ റീട്രൈ തന്ത്രമല്ല.

വിച്ഛേദിക്കുന്നതിന്, `POST /v1/oauth/revoke`-ലേക്ക് `token`, `client_id` എന്നിവ അയയ്ക്കുക. ഏതെങ്കിലും ടോക്കൺ റിവോക്ക് ചെയ്യുന്നത് അതിൽനിന്ന് നൽകിയ എല്ലാ ടോക്കണുകളും ഉൾപ്പെടെ അതിന്റെ ഓതറൈസേഷൻ റിവോക്ക് ചെയ്യും. നിലവിലില്ലാത്ത ടോക്കൺ നിലവിലുണ്ടോ എന്ന് വെളിപ്പെടുത്താതെ വിജയം നൽകും. ഡാഷ്ബോർഡ് സെഷനുകൾക്ക് `GET /v1/oauth/grants`-ൽ സ്വന്തം ഓതറൈസേഷനുകൾ ലിസ്റ്റ് ചെയ്യാനും `DELETE /v1/oauth/grants/<id>`-ൽ ഒരെണ്ണം റിവോക്ക് ചെയ്യാനും കഴിയും; `X-ThunderPhone-Org` ഓർഗനൈസേഷൻ തിരഞ്ഞെടുക്കുന്നു.

### ഡിവൈസ് ഓതറൈസേഷൻ

ഡിവൈസ് ഓതറൈസേഷൻ മുൻകൂട്ടി രജിസ്റ്റർ ചെയ്ത ക്ലയന്റുകൾക്കായി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു; ഡൈനാമിക്കായി രജിസ്റ്റർ ചെയ്ത ക്ലയന്റുകൾക്ക് `unauthorized_client` ലഭിക്കും. മുൻകൂട്ടി രജിസ്റ്റർ ചെയ്ത പബ്ലിക് ക്ലയന്റ് `thunderphone-cli` ഡിവൈസ് ഓതറൈസേഷനും റിഫ്രഷും പിന്തുണയ്ക്കുന്നു. `POST /v1/oauth/device/code`-ലേക്ക് `client_id=thunderphone-cli`, `scope` എന്നിവ അയയ്ക്കുക. ഉപയോക്താവിന് `user_code`, `verification_uri` എന്നിവ കാണിക്കുക, അല്ലെങ്കിൽ `verification_uri_complete` തുറക്കുക.

`grant_type=urn:ietf:params:oauth:grant-type:device_code`, `client_id`, `device_code` എന്നിവ ഉപയോഗിച്ച് ടോക്കൺ എൻഡ്പോയിന്റ് പോൾ ചെയ്യുക; ലഭിച്ച `interval` എങ്കിലും (5 സെക്കൻഡ്) കാത്തിരിക്കുക. `authorization_pending`-ൽ തുടരുക. `slow_down` ലഭിക്കുമ്പോൾ, തുടർന്നുള്ള എല്ലാ അഭ്യർത്ഥനകൾക്കും പ്രതികരണത്തിൽ ലഭിക്കുന്ന പുതിയ `interval` (5 സെക്കൻഡ് വർധിപ്പിച്ചത്) ഉപയോഗിക്കുക. `access_denied`, `expired_token`, അല്ലെങ്കിൽ മറ്റേതെങ്കിലും പിശകിൽ നിർത്തുക. ഒരു ഡിവൈസ് കോഡ് ഒരിക്കലും സ്വയമേവ അംഗീകരിക്കരുത്.

മുൻകൂട്ടി രജിസ്റ്റർ ചെയ്ത `thunderphone-mcp` ക്ലയന്റ് ഏത് പോർട്ടിലും `http://127.0.0.1/callback`, `http://localhost/callback` എന്നിവ സ്വീകരിക്കുന്നു. സ്കീം, ഹോസ്റ്റ്, പാഥ്, ക്വറി എന്നിവ പൊരുത്തപ്പെടണം; ടോക്കൺ എക്സ്ചേഞ്ച് ഓതറൈസേഷനിൽ നിന്നുള്ള കൃത്യമായ റീഡയറക്റ്റ് URI (പോർട്ട് ഉൾപ്പെടെ) ഉപയോഗിക്കണം. ഡൈനാമിക്കായി രജിസ്റ്റർ ചെയ്ത ക്ലയന്റുകൾക്ക് പോർട്ട് ഉൾപ്പെടെ കൃത്യമായ റീഡയറക്റ്റ്-URI പൊരുത്തപ്പെടുത്തൽ ആവശ്യമാണ്. മറ്റൊരു പാഥ് വേണമെങ്കിൽ മറ്റൊരു കോൾബാക്ക് ഡൈനാമിക്കായി രജിസ്റ്റർ ചെയ്യുക.

### അക്കൗണ്ട് ഐഡന്റിറ്റിയും വർക്ക്‌സ്‌പേസ് ഡൊമെയ്ൻ പരിശോധനകളും

നിങ്ങളുടെ ക്ലയന്റിന് ആവശ്യമായ ഓപ്പറേഷൻ സ്കോപ്പുകൾക്കൊപ്പം `openid email` രണ്ടും അഭ്യർത്ഥിക്കുക. Bearer ഹെഡറിൽ ആക്സസ് ടോക്കൺ നൽകി കണ്ടെത്തിയ `userinfo_endpoint` (`GET /v1/oauth/userinfo`) വിളിക്കുക. വിജയകരമായ പ്രതികരണത്തിൽ ഇനിപ്പറയുന്നവ അടങ്ങിയിരിക്കും:

```json
{
  "sub": "123",
  "email": "person@example.com",
  "email_verified": true,
  "name": "Example User",
  "org_id": 456
}
```

`sub` സ്ഥിരമായ ഉപയോക്തൃ ഐഡന്റിഫയറാണ്; `org_id` സമ്മതസമയത്ത് തിരഞ്ഞെടുത്ത ഓർഗനൈസേഷനാണ്. എൻഡ്പോയിന്റിന് രണ്ട് ഐഡന്റിറ്റി സ്കോപ്പുകളും ആവശ്യമാണ്, ഏതെങ്കിലും ഒന്ന് ഇല്ലെങ്കിൽ `403` നൽകും. സ്ഥിരീകരിക്കാത്ത ഇമെയിൽ വിശ്വസനീയമാണെന്ന് അവകാശപ്പെടുന്നതിനുപകരം, അക്കൗണ്ടിന് സ്ഥിരീകരിച്ച ഇമെയിൽ പ്രൊഫൈൽ ഇല്ലെങ്കിൽ `error=access_denied` സഹിതം `403` നൽകും. അസാധുവായതോ കാലഹരണപ്പെട്ടതോ റിവോക്ക് ചെയ്തതോ തെറ്റായ ഓഡിയൻസുള്ളതോ ആയ ടോക്കണുകൾ `401` നൽകും. ഹ്യൂമൻ സെഷൻ ടോക്കണുകൾക്കും ഓർഗനൈസേഷൻ API കീകൾക്കും യൂസർഇൻഫോ വിളിക്കാനാകില്ല. ID ടോക്കൺ നൽകുന്നില്ല.

## ലഭ്യമായ അനുമതികൾ

| വിഭാഗം | സ്കോപ്പുകൾ |
| --- | --- |
| ഏജന്റുകളും ഏജന്റ് ഇംപോർട്ടുകളും | `agents:read`, `agents:write` |
| കോളുകൾ | `calls:read`, `calls:write` |
| ഫോൺ നമ്പറുകളും VoIP-ഉം | `numbers:read`, `numbers:write` |
| അറിവ് | `knowledge:read`, `knowledge:write` |
| കാമ്പെയ്‌നുകൾ | `campaigns:read`, `campaigns:write` |
| ഇന്റഗ്രേഷനുകൾ, വെബ്‌ഹുക്ക് എൻഡ്‌പോയിന്റുകൾ, MCP സെർവറുകൾ | `integrations:read`, `integrations:write` |
| ശബ്ദങ്ങൾ | `voices:read` |
| പരിശോധനാ സാഹചര്യങ്ങൾ, പരിശോധനാ റണ്ണുകൾ, സാധൂകരണം | `testing:read`, `testing:write` |
| ബില്ലിംഗ് | `billing:read` |
| അക്കൗണ്ട് ഐഡന്റിറ്റിയും സ്ഥിരീകരിച്ച ഇമെയിലും | `openid`, `email` (userinfo-യ്ക്ക് രണ്ടും ആവശ്യമാണ്) |
| സ്ഥിരമായ കണക്ഷൻ | `offline_access` (എപ്പോഴും ഉൾപ്പെടുത്തിയിരിക്കുന്നു) |

GET, HEAD, OPTIONS എന്നിവ റീഡ് സ്കോപ്പുകൾ ഉപയോഗിക്കുന്നു; മറ്റ് രീതികൾ റൈറ്റ് സ്കോപ്പുകൾ ഉപയോഗിക്കുന്നു. OAuth വഴി ശബ്ദ, ബില്ലിംഗ് മാറ്റങ്ങൾ ലഭ്യമല്ല; `POST /v1/voices/preview` ഒരു ശബ്ദത്തിന്റെ കോൺഫിഗറേഷൻ മാറ്റാതെ പ്രിവ്യൂ ചെയ്യുന്നതിനാൽ `voices:read` ഉപയോഗിക്കുന്നു. MCP ടൂളുകൾ അവയുടെ അടിസ്ഥാന REST പ്രവർത്തനത്തിന്റെ സ്കോപ്പ് നടപ്പിലാക്കുന്നു. അനുമതി നൽകുന്ന ഉപയോക്താവ് രണ്ട് ഓർഗനൈസേഷനുകളിലും ഉൾപ്പെട്ടാലും, ഓർഗനൈസേഷനുകൾക്കിടയിലെ കൈമാറ്റങ്ങൾ നിരസിക്കപ്പെടും. API-കീ മാനേജ്‌മെന്റും മനുഷ്യ അക്കൗണ്ട് ക്രമീകരണങ്ങളും ഉൾപ്പെടെയുള്ള മറ്റ് API വിഭാഗങ്ങൾ OAuth വഴി ലഭ്യമല്ല. REST പ്രവർത്തനത്തിൽ അനുമതി ഇല്ലെങ്കിൽ `WWW-Authenticate: Bearer error="insufficient_scope", scope="..."` സഹിതം `403` ലഭിക്കും. അസാധുവായതോ കാലഹരണപ്പെട്ടതോ ആയ ആക്സസ് ടോക്കണുകൾ `401` നൽകും.


### MCP ടൂൾ ഓതന്റിക്കേഷൻ സിഗ്നലുകൾ

`tools/list`-ലെ ഓരോ ടൂളിലും ആ ടൂളിന്റെ REST പ്രവർത്തനത്തിന്റെ സ്കോപ്പിനൊപ്പം `securitySchemes: [{"type": "oauth2", "scopes": ["agents:read"]}]` ഉൾപ്പെടുന്നു. പൊതു ഡോക്യുമെന്റേഷൻ ടൂളുകൾ ശൂന്യമായ സ്കോപ്പ് ലിസ്റ്റ് ഉപയോഗിക്കുന്നു, എങ്കിലും ഓതന്റിക്കേറ്റ് ചെയ്ത കണക്ഷൻ ആവശ്യമാണ്.

ടൂളിന്റെ സ്കോപ്പ് ഇല്ലാത്ത സാധുവായ ടോക്കണിന് HTTP `200` ലഭിക്കും; അതിൽ `isError: true` ഉൾക്കൊള്ളുന്ന JSON-RPC `result`, `content`-ലെ വിശദീകരണ വാചകം, `_meta["mcp/www_authenticate"]` എന്നിവ ഉണ്ടായിരിക്കും. രണ്ടാമത്തേത് `resource_metadata`, `error="insufficient_scope"`, `error_description`, ആവശ്യമായ `scope` എന്നിവയുള്ള Bearer ചലഞ്ച് അടങ്ങിയ ഒരു അറേയാണ്. ടൂൾ പ്രവർത്തിപ്പിക്കില്ല. വിപുലീകരിച്ച സമ്മതം അഭ്യർത്ഥിക്കാൻ ഈ ചലഞ്ച് ഉപയോഗിക്കുക. ഇല്ലാത്തതോ അസാധുവായതോ ആയ ഓതന്റിക്കേഷൻ `WWW-Authenticate` സഹിതം HTTP `401` നൽകുന്നത് തുടരും; REST സ്കോപ്പ് പരാജയങ്ങൾ HTTP `403` നൽകുന്നത് തുടരും.

## ക്രെഡൻഷ്യൽ നിലനിർത്തൽ

API സ്റ്റേജിംഗിലും പ്രൊഡക്ഷനിലും ഓരോ മണിക്കൂറിലും `python manage.py oauth_cleanup` പ്രവർത്തിപ്പിക്കുന്നു. ഇത് കാലഹരണപ്പെട്ട അംഗീകാര അഭ്യർത്ഥനകളും ഡിവൈസ് കോഡുകളും നീക്കം ചെയ്യുന്നു. കാലഹരണപ്പെട്ട ആക്സസ് ടോക്കണുകൾ, അംഗീകാര കോഡുകൾ, റിഫ്രഷ്-ടോക്കൺ ഹാഷുകൾ എന്നിവ അവയുടെ ഗ്രാന്റ് റദ്ദാക്കിയതിനു ശേഷമോ മുഴുവൻ ഫാമിലിയും നിർജ്ജീവമായതിനു ശേഷമോ മാത്രമേ നീക്കം ചെയ്യൂ. ഫാമിലിക്ക് ഉപയോഗിക്കാവുന്ന റിഫ്രഷ് ടോക്കൺ, അംഗീകാര കോഡ്, അംഗീകരിച്ച ഡിവൈസ് കോഡ്, അല്ലെങ്കിൽ ആക്സസ് ടോക്കൺ ഉള്ളിടത്തോളം ഉപയോഗിച്ച ഹാഷുകൾ നിലനിർത്തും; അതിനാൽ ക്ലീനപ്പ് റീപ്ലേ കണ്ടെത്തൽ പ്രവർത്തനരഹിതമാക്കാൻ കഴിയില്ല.
