所有ソフトの分析
const url = 'https://game.retrogather.com/rest/v1/getLibraryAnalytics';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"sections":["summary"],"platformIds":[1],"genreId":1,"title":"example","releaseYearFrom":1,"releaseYearTo":1,"attributes":["example"],"buyPlace":"example","ratingFrom":1,"ratingTo":1,"buyDateFrom":"2026-04-15","buyDateTo":"2026-04-15","buyPriceFrom":1,"buyPriceTo":1}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://game.retrogather.com/rest/v1/getLibraryAnalytics \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "sections": [ "summary" ], "platformIds": [ 1 ], "genreId": 1, "title": "example", "releaseYearFrom": 1, "releaseYearTo": 1, "attributes": [ "example" ], "buyPlace": "example", "ratingFrom": 1, "ratingTo": 1, "buyDateFrom": "2026-04-15", "buyDateTo": "2026-04-15", "buyPriceFrom": 1, "buyPriceTo": 1 }'Library analytics / 所有ソフトの分析: stats for owned games, including money spent. Matches the in-app analysis dialog. Default section is summary only. summary.pricedCount = games with a price (the base of totalAmount); purchase.yearly/monthly omit games without buyDate. All plans use library rows (not physical copies): a game with several copies counts once, at its representative copy’s price, so the in-app LIGHT/PREMIUM total may be higher. Say so when answering how much the user spent; sum getPhysicalCopies for the per-copy total. Filters match getLibrary; buyDateFrom/buyDateTo still apply only to purchase amounts.
Plans: FREE / LIGHT / PREMIUM. Scopes: library:read.
Authorizations
Section titled “Authorizations”Request Body
Section titled “Request Body”object
Platform IDs (OR)
Genre ID from listGenres. A root ID matches the game’s genreId or genreSubId. A non-root ID matches titleKana using that genre’s taxonomy key.
Title, reading, or edition name
Release year from (inclusive). Analytics/export axis stays yearly.
Release year to (inclusive). Analytics/export axis stays yearly.
Attribute IDs or labels (AND)
Purchase place (substring, case-insensitive)
Minimum rating (1-5)
Maximum rating (1-5)
Purchase date from (inclusive)
Purchase date to (inclusive)
Purchase price from (JPY)
Purchase price to (JPY)
Responses
Section titled “ Responses ”Tool result JSON (no MCP envelope). Delete previews also return 200 with confirmToken.
object
object
object
object
object
object
object
object
object
Example
{ "code": "plan_required", "status": "PLANNED", "items": [ { "status": "added" } ]}Invalid_input (arguments, broken JSON body)
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Missing or invalid API key
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Insufficient_scope, plan_required, or access_suspended
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Target or tool not found
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Burst or daily quota exceeded. See resetAt.
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Headers
Section titled “Headers”Seconds
Unexpected server failure. Retrying the same call will not help.
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Temporary failure or maintenance. Retry after Retry-After.
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Headers
Section titled “Headers”Seconds
