curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
OAuth and MCP protocol
Get MCP protected-resource metadata
Discover the MCP resource audience, authorization server, supported product permissions, and supported bearer-token transport.
GET
/
.well-known
/
oauth-protected-resource
/
mcp
curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Discover the MCP resource audience, authorization server, supported product permissions, and supported bearer-token transport.
GET https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp
Authentication
None.Request examples
Follow the documented encoding and authentication for this route. The action API’s envelope and idempotency rules apply only to action invocations.curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Response
OAuth protected-resource metadata. Both published metadata paths return the same object for the MCP resource.HTTP 200
{
"resource": "https://api.voicecheap.ai/mcp",
"resource_name": "VoiceCheap MCP",
"authorization_servers": ["https://api.voicecheap.ai"],
"scopes_supported": [
"account:read",
"usage:read",
"settings:read",
"settings:write",
"team:read",
"team:write",
"projects:read",
"projects:write",
"projects:delete",
"translations:write",
"transcription:read",
"transcription:write",
"subtitles:read",
"subtitles:write",
"tts:read",
"tts:write",
"voices:read",
"voices:write",
"images:read",
"images:write",
"thumbnails:read",
"thumbnails:write",
"folders:read",
"folders:write",
"glossary:read",
"glossary:write",
"webhooks:read",
"webhooks:write",
"publishing:read",
"publishing:write"
],
"bearer_methods_supported": ["header"]
}
Operation notes
- Use resource exactly as returned when building authorization and token requests. Do not substitute /v1, append a slash, or use another environment’s origin.
- The resource accepts bearer credentials through HTTP headers. Query-string credentials are rejected by MCP authentication.
- scopes_supported contains product permissions only; offline_access appears in authorization-server metadata instead.
- An unauthenticated /mcp response advertises the /mcp-specific metadata path in WWW-Authenticate.
- The production resource is https://api.voicecheap.ai/mcp. The default development resource is https://dev.api.voicecheap.ai/mcp; deployments may publish a different canonical development origin.
Errors
| HTTP status | Code | Meaning or recovery |
|---|---|---|
| 429 | temporarily_unavailable | The public OAuth request rate limit was reached. Wait for the current window before retrying. |
| 500 | server_error | Authorization is temporarily unavailable. Retry later. |
Was this page helpful?

