Scrykeeper Royal Road Intelligence

Royal Road story, author, audience, and market intelligence for AI agents.

Should I use this

Quality & Safety

B
Description quality
100%
Schema completeness
63%
Naming quality
100%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin get_story

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~738Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (0.58% of 128k context)

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-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools