Refresh an Apollo OAuth access token
Immutable Catalog Entry
This descriptor comes from the active versioned Portal catalog.
- Contract tier:
legacy - Risk:
write - Catalog version:
1.0.2 - Descriptor hash:
9af8777b459c382f37fc7f563d0f0e315f6ec685633c7e79565e43575612e953
Use this legacy credential helper to refresh Apollo OAuth credentials. It contacts Apollo and may return sensitive tokens, so callers must never log or persist the result outside an approved credential store. Repeating the call may rotate credentials and is not treated as idempotent.
Request Body
{
"jsonrpc": "2.0",
"id": "apollo-apollo-oauth-refresh-token-example",
"method": "tools/call",
"params": {
"name": "apollo.apollo_oauth_refresh_token",
"arguments": {
"refresh_token": "refresh_token_example",
"client_id": "client_id_123",
"client_secret": "client_secret_example",
"redirect_uri": ""
}
}
}
Arguments Schema
{
"type": "object",
"required": [
"refresh_token",
"client_id",
"client_secret"
],
"properties": {
"client_id": {
"type": "string",
"minLength": 1,
"description": "Apollo OAuth application client ID."
},
"redirect_uri": {
"anyOf": [
{
"type": "string",
"description": "Registered redirect URI when Apollo requires it."
},
{
"type": "null"
}
],
"default": null,
"description": "Registered redirect URI when Apollo requires it."
},
"client_secret": {
"type": "string",
"minLength": 1,
"description": "Apollo OAuth application client secret; never log this value."
},
"refresh_token": {
"type": "string",
"minLength": 1,
"description": "Apollo refresh token; never log this value."
}
},
"additionalProperties": false
}
Output Schema
{
"type": "object",
"required": [
"ok",
"data",
"error",
"meta"
],
"properties": {
"ok": {
"type": "boolean",
"description": "Whether the requested operation completed successfully."
},
"data": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "array",
"items": {}
},
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "Normalized provider or navigation result."
},
{
"type": "null"
}
],
"default": null,
"description": "Normalized provider or navigation result."
},
"meta": {
"type": "object",
"description": "Safe request, pagination, and truncation metadata.",
"additionalProperties": true
},
"error": {
"anyOf": [
{
"type": "object",
"description": "Safe error details when ok is false.",
"additionalProperties": true
},
{
"type": "null"
}
],
"default": null,
"description": "Safe error details when ok is false."
}
},
"description": "Apollo MCP normalized response envelope.",
"additionalProperties": false
}
Code Examples
- cURL
- Node.js
- Python
curl -X POST 'https://portal.madpanda3d.com/api/mcp' \
-H 'Authorization: Bearer mad_live_***' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "apollo-apollo-oauth-refresh-token-example",
"method": "tools/call",
"params": {
"name": "apollo.apollo_oauth_refresh_token",
"arguments": {
"refresh_token": "refresh_token_example",
"client_id": "client_id_123",
"client_secret": "client_secret_example",
"redirect_uri": ""
}
}
}'
const response = await fetch('https://portal.madpanda3d.com/api/mcp', {
method: 'POST',
headers: {
Authorization: 'Bearer mad_live_***',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": "apollo-apollo-oauth-refresh-token-example",
"method": "tools/call",
"params": {
"name": "apollo.apollo_oauth_refresh_token",
"arguments": {
"refresh_token": "refresh_token_example",
"client_id": "client_id_123",
"client_secret": "client_secret_example",
"redirect_uri": ""
}
}
}),
});
const data = await response.json();
console.log(data);
import requests
url = 'https://portal.madpanda3d.com/api/mcp'
headers = {
'Authorization': 'Bearer mad_live_***',
'Content-Type': 'application/json',
}
payload = {
"jsonrpc": "2.0",
"id": "apollo-apollo-oauth-refresh-token-example",
"method": "tools/call",
"params": {
"name": "apollo.apollo_oauth_refresh_token",
"arguments": {
"refresh_token": "refresh_token_example",
"client_id": "client_id_123",
"client_secret": "client_secret_example",
"redirect_uri": ""
}
}
}
response = requests.post(url, headers=headers, json=payload, timeout=60)
print(response.json())
Example Responses
- 200 Success
- 502 Upstream Error
{
"ok": true,
"message": "Tool apollo.apollo_oauth_refresh_token executed successfully.",
"note": "Response shape varies by MCP tool. Inspect live responses for exact fields."
}
{
"ok": false,
"classification": "upstream_http_error",
"message": "Upstream MCP returned a non-success status."
}