This release includes 7 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
Summary
AI summaryUpdates 2.0, default, and /docs/migration-1.x-to-2.0.md across a mixed release.
Full changelog
Added
- Output channel design replaces the per-call
output_formatparameter
(2.0 design decision). The original roadmap proposed an optional
output_format=markdown|jsonparameter with 2.0 flipping the default to
json. That shape was rejected during design. The primary consumer is an
LLM agent, and JSON inflates prompt tokens ~15–30% versus markdown — which
would negate the context-budget savings the tool-surface consolidation
delivers. 2.0 instead keeps markdown as the always-oncontenttext and
carries structured data on MCP's nativestructuredContentfield, selected
by a connection-leveloutput_channelknob (content(default) /
structured/both) via query string /x-prts-output-channelheader /
PRTS_OUTPUT_CHANNELenv. The default is not flipped to JSON. See
docs/migration-1.x-to-2.0.mdfor the
per-tool channel mapping and client configuration. (The Python implementation
additionally documents a "narrative-tool wire slimming" entry for dropping
FastMCP's automaticoutputSchema={result:string}wrapper; the TS transport
has no equivalent auto-wrapper, so narrative tools are simply part of the
content-only delivery path here.) - Output channel pilot (2.0). Streamable HTTP sessions can opt into
output_channel=structuredoroutput_channel=bothvia query string,
x-prts-output-channelheader, orPRTS_OUTPUT_CHANNEL. This first TS
migration slice enables structuredContent forlist_stageswhile preserving
the default content-only markdown output, including legitimate empty pages
(filter no-match / offset past end) as structured empty payloads. - Output channel coverage for structured data tools (2.0). The remaining
game-data and story navigation tools now support structuredContent in TS:
operator/item/enemy/stage details and listings, stage-enemy fusion,
story event/chapter listings, operator memoirs, character appearances, and
event speaker counts. - Output channel coverage for search tools (2.0). The TS
search,
search_stories, andsearch_prtstools now emit structuredContent in
structured/bothchannels, including structured-empty payloads for legal
no-match results and parity fixtures shared with the Python implementation.
Changed
- Parameter naming normalization (2.0, breaking). Operator tools
(get_operator_archives,get_operator_voicelines,get_operator_basic_info,
get_operator_memoirs) now takenameinstead ofoperator_name, matching
thenameconvention already used by the enemy/stage/item/character tools. - Unified search (2.0, breaking).
search_data,search_enemies,
search_stages, andsearch_itemsare consolidated into a single
search(scope, pattern, max_results)tool with a requiredscopeenum
(operators/enemies/stages/items). Story dialogue search remains a
separatesearch_stories(its filters differ). Tool surface drops 32 → 28. - Unified PRTS page tool (2.0, breaking).
read_prts_page,
list_prts_sections,get_prts_categories,get_prts_links, and
get_prts_templateare consolidated into a singleprts_page(page_title, action, ...)tool with a requiredactionenum (read/sections/
categories/links/template). Wiki keyword search remains a separate
search_prts. Tool surface drops 28 → 24. list_storiesabsorbs the event-level summary (2.0, breaking).
list_stories(event_id, include_summaries=true)now prepends the event's LLM
overview (fromevent_summaries.json) when present, on top of the per-chapter
one-liners it already returned — making it a superset of the former
get_event_summary. Tool surface drops 24 → 23.- Tool descriptions standardized (2.0). All tool descriptions were rewritten
to a consistent house style (verb-first purpose, output-shape note, at most one
cross-reference, parameter semantics kept in the parameter schema) and trimmed
~20% to reduce context budget on smaller-context models. No change to tool
names, parameters, or output format. - Story empty-result wording aligned with Python (2.0). TS story navigation
tools now use the Python-compatible empty messages for event/chapter listings,
character appearances, and speaker counts (including Python-style quoted
filter values). This is an intentional TS-dev text change in otherwise
content-compatible output-channel migration paths.
Removed
search_data,search_enemies,search_stages,search_items,
list_search_scopes(2.0, breaking). Replaced by unifiedsearch(scope, ...);
the scope catalogue previously returned bylist_search_scopesis folded into
thesearchtool description.read_prts_page,list_prts_sections,get_prts_categories,
get_prts_links,get_prts_template(2.0, breaking). Replaced by unified
prts_page(page_title, action, ...).get_event_summary(2.0, breaking). Folded into
list_stories(include_summaries=true);get_story_summary(single-chapter
deep summary) is unchanged.
Install
# Run directly (Streamable HTTP on :3000)
npx prts-mcp-ts
# Or install globally
npm install -g [email protected]
MCP endpoint: http://localhost:3000/mcp
Breaking Changes
- Removed tools: search_data, search_enemies, search_stages, search_items, list_search_scopes; replaced by unified `search(scope, ...)`.
- Removed PRTS page tools: read_prts_page, list_prts_sections, get_prts_categories, get_prts_links, get_prts_template; replaced by unified `prts_page(page_title, action, ...)`.
- Removed tool `get_event_summary`; its functionality folded into `list_stories(include_summaries=true)`.
- Parameter renaming: operator tools now use `name` instead of `operator_name` (breaking change).
- Unified search: consolidated four search tools into single `search(scope, pattern, max_results)` with required enum scope.
- Unified PRTS page tool: consolidated five PRTS‑related tools into single `prts_page(page_title, action, ...)` with required enum action.
- list_stories now prepends event-level summary when `include_summaries=true`, supplanting former `get_event_summary` behavior.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About 3aKHP/prts-mcp
MCP Server for Arknights, querying the PRTS Wiki API and serving auto-synced operator archives and voice lines from game data. Designed for fan-creation (同人創作) AI agents. Python (stdio/Docker) and TypeScript (Streamable HTTP) implementations.
Related context
Related tools
Earlier breaking changes
- vts/v1.0.0 Public tool surface frozen; 9 MCP tool names, parameters, and response formats locked.
Beta — feedback welcome: [email protected]