Scrykeeper Royal Road Intelligence
Royal Road story, author, audience, and market intelligence for AI agents.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin get_story
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"royal-road-intelligence": {
"url": "https://scrykeeper.com/mcp"
}
}
}Remote endpoints
https://scrykeeper.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢get_story(rr_fiction_id)
Get Scrykeeper intelligence for one Royal Road fiction ID. Observed readers are sampled graph observations and are not total readership. Anonymous demo access is available; higher limits are available at https://scrykeeper.com/api/access.
Input Schema
{
"type": "object",
"properties": {
"rr_fiction_id": {
"title": "Rr Fiction Id",
"type": "integer"
}
},
"required": [
"rr_fiction_id"
],
"title": "get_storyArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "get_storyDictOutput"
}🟢get_author(identity_id)
Get a resolved Scrykeeper author identity, known works and deduplicated observed audience footprint. Known works are not guaranteed to be a complete bibliography.
Input Schema
{
"type": "object",
"properties": {
"identity_id": {
"title": "Identity Id",
"type": "integer"
}
},
"required": [
"identity_id"
],
"title": "get_authorArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "get_authorDictOutput"
}🟢search_market(q, genre, lifecycle, followers_min, followers_max, ...)
Search Scrykeeper's Royal Road market dataset by genre, lifecycle, followers, sampled observed readers, update recency and known commercial mapping. commercial='none' means no accepted mapping in Scrykeeper, not unpublished.
Input Schema
{
"type": "object",
"properties": {
"q": {
"default": "",
"title": "Q",
"type": "string"
},
"genre": {
"default": "",
"enum": [
"",
"litrpg",
"progression",
"cultivation",
"xianxia",
"dungeon_core",
"time_loop",
"cozy",
"fanfiction"
],
"title": "Genre",
"type": "string"
},
"lifecycle": {
"default": "",
"enum": [
"",
"ongoing",
"completed",
"stubbed",
"hiatus",
"inactive",
"dropped",
"unknown"
],
"title": "Lifecycle",
"type": "string"
},
"followers_min": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Followers Min"
},
"followers_max": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Followers Max"
},
"readers_min": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Readers Min"
},
"readers_max": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Readers Max"
},
"commercial": {
"default": "all",
"enum": [
"all",
"known",
"none"
],
"title": "Commercial",
"type": "string"
},
"updated_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Updated Days"
},
"sort": {
"default": "audience",
"enum": [
"audience",
"followers",
"recent"
],
"title": "Sort",
"type": "string"
},
"limit": {
"default": 20,
"title": "Limit",
"type": "integer"
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Cursor"
}
},
"title": "search_marketArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "search_marketDictOutput"
}🟢get_data_context
Return Scrykeeper's current data coverage, source-specific freshness, methodology and limitations. Use this when interpreting reader, author or commercial metrics.
Input Schema
{
"type": "object",
"properties": {},
"title": "get_data_contextArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "get_data_contextDictOutput"
}Community
Evidence