InkQuest
Server Details
Browse free InkQuest stories, openings, and HSK recommendations.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- serendipityApe/ink-quest
- GitHub Stars
- 0
TDQS
Scored across 3 tools
The three tools target distinct actions: listing catalog cards, recommending ranked stories, and fetching a specific opening scene. Some overlap exists because list_stories and recommend_story both accept language, level, and genre filters, which could cause minor confusion, but the recommend tool's ranking and reason output make it clearly separate.
All tool names use a consistent snake_case verb_noun pattern: get_story_opening, list_stories, recommend_story. The verbs are distinct and descriptive, with no mixing of conventions.
Three tools is a tight, well-scoped set for a free story preview and recommendation server. Each tool earns its place: browsing, personalized discovery, and opening retrieval, with no redundant operations.
The surface covers listing free stories, recommending them, and retrieving opening scenes, which supports the core free-tier workflow. A minor gap is the lack of a dedicated tool to fetch metadata for a single story by ID, though list_stories already provides cards with essential details.
Available Tools
3 toolsget_story_openingGet the free openingARead-onlyIdempotentInspect
Return the free opening scene of one public InkQuest story: plain text, pinyin or pronunciation and short glosses when the catalog has them, and the opening choices. Premium choices are labeled and their following scenes are omitted. Always includes the https://inkquest.dev/stories/{id} URL where the reader continues. Refuses unknown ids, withdrawn demos, locked stories, and user-generated stories. Never returns subscriber-only scene text.
| Name | Required | Description | Default |
|---|---|---|---|
| story_id | Yes | Public catalog id from list_stories, such as before-the-rain-stops. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial behavior the annotations cannot: premium choices are labeled with following scenes omitted, subscriber-only text is never returned, and the canonical URL is always included. This is exactly the extra context the annotations leave out.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the return contract and dense with information; every sentence carries weight. The middle clauses listing text/pinyin/glosses are a touch run-on but remain readable and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully carries the burden of describing the return payload (text, pinyin/pronunciation, glosses, opening choices, URL) and the failure modes. An agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents story_id with a pattern, maxLength, and an example. The description adds no parameter syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return the free opening scene of one public InkQuest story') with precise scope ('free', 'public'). It is easily distinguished from list_stories and recommend_story, which enumerate or suggest rather than fetch a scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operating context by enumerating what it refuses (unknown ids, withdrawn demos, locked stories, user-generated stories) and ties the id source to list_stories. It does not, however, explicitly route the agent between this tool and its siblings when both could seem plausible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_storiesList public storiesARead-onlyIdempotentInspect
List free, public InkQuest stories. Each card has the title, level (HSK for Chinese, CEFR for English), genre, a short description, and the public reading URL https://inkquest.dev/stories/{id}. Optional filters: target_language (zh or en), hsk_level (Chinese stories only), and genre. Does not include subscriber-only scenes, withdrawn demos, or user-generated stories.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | Genre or keyword, such as mystery, romance, xianxia, comedy, or science fiction. Case-insensitive. | |
| hsk_level | No | HSK band for Chinese stories. Use an integer 1-9 or a string like "HSK 4". Does not apply to English CEFR stories. | |
| target_language | No | Learning language: zh for Chinese stories, en for English stories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new context beyond that: the exact exclusions (subscriber-only, withdrawn demos, user-generated) and the per-card field list including the public URL pattern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core purpose before filters and exclusions. Every sentence carries information, though the card-field enumeration is slightly list-like and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the return shape (title, level, genre, short description, public URL) and the filter constraints and exclusions. An agent has everything needed to call and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three filters including the zh/en enum and the HSK-4-style string pattern. The description reinforces that hsk_level is Chinese-only, but adds no syntax or format detail beyond the schema, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List free, public InkQuest stories') plus precise scope exclusions (no subscriber-only scenes, withdrawn demos, or user-generated stories). This cleanly separates it from get_story_opening and recommend_story in spirit, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists optional filters and what is excluded, implying a catalog-browsing use case, but never says when to reach for this tool versus recommend_story or get_story_opening. No explicit when/when-not guidance or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_storyRecommend a public storyARead-onlyIdempotentInspect
Recommend up to three public InkQuest stories. Pass hsk_level (1-9 or "HSK 4") to rank Chinese stories by closeness to that band. Optional genre or interests (keywords such as mystery, romance, xianxia, sci-fi) boost matches. Optional target_language is zh or en. Each match includes a short reason and a https://inkquest.dev/stories/{id} link. Only free catalog stories are considered; subscriber-only scenes and user-generated stories are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | Genre or keyword, such as mystery, romance, xianxia, comedy, or science fiction. Case-insensitive. | |
| hsk_level | No | HSK band for Chinese stories. Use an integer 1-9 or a string like "HSK 4". Does not apply to English CEFR stories. | |
| interests | No | Free-text interests, such as "mystery, rainy city" or "sci-fi". Combined with genre. | |
| target_language | No | Learning language: zh for Chinese stories, en for English stories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds genuinely new behavioral context: a hard cap of three results, per-match reasons and links, and exclusion of subscriber-only and user-generated content. It stops short of describing behavior when no parameters are supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose and scope, then parameter behavior, then output shape, then exclusions. Dense but every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by naming the return shape (short reason plus https://inkquest.dev/stories/{id} link) and the catalog exclusions. It does not state fallback behavior when no optional params are provided, leaving a small gap for a parameterless call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds ranking semantics the schema lacks: hsk_level ranks by 'closeness to that band' rather than exact filtering, and genre/interests 'boost matches' rather than hard-filter. That meaningfully changes how an agent would use these params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+scope: 'Recommend up to three public InkQuest stories.' It clearly states the catalog constraints and what each result contains, but never names the sibling tools (list_stories, get_story_opening), so the agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains how to drive the tool (pass hsk_level for band-ranked Chinese stories, genre/interests to boost matches) and marks the other params Optional, but gives no explicit when-to-use / when-not-to-use guidance versus list_stories or get_story_opening.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
get_story_opening - First observed
list_stories - First observed
recommend_story
Related MCP Connectors
Short, finished fiction to discover by mood, genre or reading time inside ChatGPT.
Search Chinese books with Douban ratings, AI book guides and curated toplists. Free, no API key.
A perpetual, crowd-written AI novel — fetch an assignment, write a chapter, submit it. CC0.
FREE, no key: Chapter 1 of a novel, or a manual, tech spec or medical guide section. 22 languages.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to look up HSK vocabulary, retrieve graded Chinese readings, and estimate the HSK level of Chinese text, with no API key required.6MIT
- AlicenseAqualityAmaintenanceLocal-first toolkit with 16 tools for Chinese web-novel (网文) authors: style baselines, foreshadowing and plot-thread tracking, continuity & OOC audits, keyword and sentence-pattern analysis, and offline semantic search. No API key, no network — everything runs on your machine.201,397 npm23MIT
- MIT
- AlicenseBqualityAmaintenanceEnables AI agents to get book recommendations by topic or mood, discover serendipitous blind-date picks from first sentences, and access free public-domain classics with read-now availability, all with no API keys required.528 PyPIMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.