Skip to main content
Glama

PRTS MCP Server

PyPI 2.x npm stable npm prts-mcp-ts License: MIT

Language / 语言: English | 中文


English

An MCP Server for Arknights fan creation (同人創作) AI agents. Powered by the PRTS Wiki MediaWiki API and auto-synced operator game data, it gives any MCP-compatible client — Claude Desktop, Claude Code, Chatbox, and more — live access to lore, operator archives, and voice lines from the world of Terra.

Implementation and Release Lines

Starting with 3.x, PRTS-MCP is unified into a single native Rust implementation at the repository root, with its C regular-expression engine statically linked into prebuilt binaries. All game-data queries, Wiki requests, and MCP protocol handling run in Rust:

  • Prebuilt native archives and Docker images run directly with no language runtime or compiler required.

  • npm packages provide a thin Node.js launch bridge (Node >=22, npm >=10) that invokes the platform-matched Rust binary; Bun is not required.

  • Building from source requires a Rust toolchain and a C compiler.

Line

Version

Tools

Status

Public stable (main)

3.1.1

24

Native Rust stable release on npm (latest), GitHub Releases, and GHCR (:latest, :3).

Rust (develop)

3.1.2-dev.0

24

Active 3.x development line.

lts/2.8

2.8.x

24

Python/TypeScript long-term maintenance; EOL 2027-07-02.

lts/1.7

1.7.x

32

Python/TypeScript long-term maintenance; EOL 2027-07-02.

On npm, install prts-mcp (or pin 3.1.1). If you want to keep existing 2.x command names (prts-mcp-ts, prts-mcp-ts-bun, prts-mcp-ts-stdio), install prts-mcp-ts; from 3.0.0 it is also backed by the Rust binary. To stay on 2.8.x, pin prts-mcp-ts@lts-2.8 or ghcr.io/3akhp/prts-mcp:2. See the roadmap, 2.x → 3.0 migration guide, and 2.8.1 documentation.

Prebuilt binaries are provided for Linux x64/ARM64 (glibc >= 2.28), Windows x64, and macOS ARM64/x64 (macOS 14.0+). Linux musl/Alpine and other CPU architectures are not supported by the prebuilt native archives. Docker images are published for Linux x64 and ARM64. See NATIVE-PLATFORMS.md for platform ABI baselines and verification details.

Quick Start

1. npm (Node >=22, npm >=10)

# Install globally and start Streamable HTTP (default on port 3000):
npm install -g prts-mcp@3.1.1
prts-mcp

# Or run in stdio mode for local MCP clients:
PRTS_TRANSPORT=stdio prts-mcp

# Or keep legacy 2.x command names via the compatibility package:
npm install -g prts-mcp-ts@3.1.1
prts-mcp-ts-stdio

For a one-off trial without global installation:

  • HTTP mode: npx -y prts-mcp@3.1.1

  • stdio mode: npx -y --package=prts-mcp-ts@3.1.1 prts-mcp-ts-stdio

Default transport behavior by entry point:

  • prts-mcp (native binary and npm main package): defaults to Streamable HTTP at http://localhost:3000/mcp (health check at /health). Set PRTS_TRANSPORT=stdio when a local MCP client spawns the server as a subprocess.

  • Docker image (ghcr.io/3akhp/prts-mcp): defaults to stdio. Pass -e PRTS_TRANSPORT=http to run it as an HTTP server.

  • prts-mcp-ts compatibility commands: run the Rust binary under the hood (no Bun needed) while keeping fixed 2.x transport modes — prts-mcp-ts and prts-mcp-ts-bun always use HTTP, and prts-mcp-ts-stdio always uses stdio.

2. Docker

# Run as an HTTP service with persistent data:
docker run -d --name prts-mcp -p 127.0.0.1:3000:3000 -e PRTS_TRANSPORT=http -v prts-data:/data ghcr.io/3akhp/prts-mcp:3.1.1

3. Prebuilt Native Archives & Source Builds

Download the archive for your OS and CPU from the 3.1.1 GitHub Release, verify its SHA-256 checksum, extract it while keeping the bin/ and data/ directory structure intact, and run bin/prts-mcp (bin\prts-mcp.exe on Windows). To build from source, run cargo build --locked --release --bins.

For MCP client configuration snippets (Claude Desktop, Claude Code, Roo Code, Codex), see the Agent & MCP Beginner Guide, Client Quick Start Guide, and Tools & Workflow Guide. For server deployment, Docker volume mounting, and troubleshooting, see the Server Deployment Guide.

Tools

The server exposes 24 MCP tools (IMAGES_ENABLED=false disables operator_artwork, leaving 23 tools):

Tool

Description

search_prts(query, limit?)

Search PRTS Wiki by keyword, returns matching article titles

prts_page(page_title, action, ...)

Read a wiki page or metadata; template returns structured, rendered fields from top-level templates

get_operator_archives(name)

Retrieve operator archive records (Chinese name)

get_operator_voicelines(name)

Retrieve operator voice lines (Chinese name)

get_operator_basic_info(name, action="basic", phase?, level?)

Query an operator's profile/talents/base skills (basic, default), per-level combat skills (skills), or stat panels (stats); phase/level apply only to stats (Chinese name)

list_story_events(category?)

List story events; optional filter: main (main story), activities, or roguelike

list_stories(event_id, include_summaries?)

List chapters of an event in official order; include_summaries adds the event-level overview + per-chapter summaries

get_story_summary(story_key)

Single-chapter summary (LLM long summary or official one-liner)

read_story(story_key, include_narration?)

Read full dialogue for a single chapter

read_activity(event_id, include_narration?, page?, page_size?)

Read a complete activity's transcript, with pagination

search(scope, pattern, max_results?)

Full-text regex search within a data domain: scope ∈ operators / enemies / stages / items / building_skills / skills; the skill scopes support cross-operator lookup

search_stories(pattern, character?, line_type?, context_lines?, max_results?, event_id?)

Full-text regex search across story dialogue, narration, and choice lines, with character and line-type filters

list_enemies(threat_level?, limit?, offset?, full?)

List all enemies in the handbook with threat level and description

get_enemy_info(name, stage_id?)

Retrieve full enemy handbook entry by name, or stage-specific stats when stage_id is provided

get_stage_enemies(stage_id)

List enemies actually spawned in a stage, with stage-specific levels and combat stats

get_enemy_appearances(name, limit?, offset?)

Reverse lookup stages where an enemy actually spawns

list_stages(chapter?, type?, limit?, offset?)

List stages with optional chapter/zone and stage-type filters

get_stage_info(stage_id)

Retrieve detailed stage information by stage ID

list_items(category?, limit?, offset?)

List items/materials from item_table.json with optional category filtering and pagination

get_item_info(name)

Retrieve item/material details, usage, obtain methods, drops, production, and shop links

get_operator_memoirs(name)

Resolve an operator's memoir (干员密录) story keys for follow-up read_story calls

find_character_appearances(name, scope?, max_events?)

Find chapters/events where a character speaks (dialog) or is mentioned (name substring)

find_speakers_in(event_id)

List every speaker in an event with dialog line counts

operator_artwork(operator_name, action, artwork_id?, variant?)

List operator illustrations/skins (local list carries skin collection/acquisition metadata) and retrieve image variants (base64); MediaWiki by default, AKDP local assets when LOCAL_IMAGE=true

get_operator_basic_info(name) returns the basic profile by default. Pass action="skills" for Lv1–7 and mastery effects, or action="stats" for elite-phase Lv1/max stat panels with trust and potential bonuses. To query a specific level's panel, supply both phase (0–2) and level — for example, get_operator_basic_info("阿米娅", action="stats", phase=2, level=40). phase and level are valid only when action="stats", and each call returns only the selected action's content.

Output Channel

By default, tools return human-readable Markdown in the MCP content field. Clients that consume MCP structuredContent can set a connection-level output channel (content, structured, or both) via PRTS_OUTPUT_CHANNEL. In HTTP mode, individual requests or sessions can also override this via the ?output_channel= query parameter or the x-prts-output-channel header. See the environment variable reference and the 2.0 migration guide.

Image Artwork (operator_artwork)

The operator_artwork tool (2.5.0+) is enabled by default and supports two data-source modes controlled by LOCAL_IMAGE:

Variable

Default

Description

IMAGES_ENABLED

true

Master switch; false hides operator_artwork (24 → 23 tools).

LOCAL_IMAGE

false

false = fetch images on demand from PRTS MediaWiki (no upfront asset sync, though fetching an image still uses network traffic); true = sync full AKDP PNG packages to local disk (multi-GB).

PRTS_IMAGE_CACHE

true

In-memory LRU cache (256 MiB) for MediaWiki images; only effective when LOCAL_IMAGE=false.

ORIGINAL_IMAGE

false

Also sync original-resolution image shards; only effective when LOCAL_IMAGE=true.

PRTS_IMAGE_DIR

~/.local/share/prts-mcp/images/

Local directory for synced AKDP images (LOCAL_IMAGE=true only; /data/images in Docker).

Zero configuration is required out of the box: the server fetches requested illustrations from MediaWiki and caches them in memory. Set LOCAL_IMAGE=true only if you want a full local mirror of AKDP artwork assets. For storage planning and the full list of runtime variables, see Data & Artwork Storage Management and docs/admin/environment-variables.md.

Data Sources and Auto-Sync

  • PRTS Wiki API (https://prts.wiki/api.php) — lore articles, faction info, and world-building entries.

  • arknights-data-pipeline (3aKHP/arknights-data-pipeline) — self-hosted data pipeline publishing game data tables (zh_CN-excel.zip), level combat data (zh_CN-levels.zip), and parsed story dialogue with LLM summaries (zh_CN.zip) via GitHub Releases.

Game tables, level combat data, and story archives are stored under gamedata, gamedata-levels, and storyjson respectively. Once the server starts listening, it checks for updates in the background immediately and re-checks every hour by default (PRTS_AUTO_SYNC_INTERVAL_SECONDS=3600; configurable across 60..604800, or 0 to run only the startup check).

New pipeline releases include a manifest.json (prts-mcp-data/v1 contract) with the source versionId and each archive's SHA-256 and byte size. Archives that fail manifest or structure checks are rejected before activation, while pre-manifest releases remain supported. If a download or validation fails, the previously activated data generation stays online without interruption.

GITHUB_MIRRORS accepts comma-separated fallback URL prefixes for GitHub release downloads (surrounding whitespace and trailing slashes are normalized automatically). Standard proxy environment variables (HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXY) are also respected; using a proxy or mirror never bypasses manifest or ZIP verification.

Public Rust native archives, Docker images, and npm packages ship with a verified read-only fallback snapshot of game, level, and story data so offline queries work immediately even before the first sync completes. Once complete user data is present in the writable data directory or volume, user data takes precedence. Source builds rely on runtime auto-sync or explicit data paths (GAMEDATA_PATH, STORYJSON_PATH); crates.io publication is planned after 3.0.0 stable, and there is no Rust package on PyPI.

Protocol Compatibility & Migration Guides

  • Dual-Era MCP Protocol (Zero-Config Adaptive): PRTS-MCP supports both the stateful legacy session flow (initialize + Mcp-Session-Id) and the stateless 2026-07-28 modern envelope (_meta per request) with zero server-side configuration. In Streamable HTTP mode, a single /mcp endpoint can serve multiple legacy and modern clients concurrently, isolating each session's state and output channel; if a legacy session expires after the 24-hour idle timeout (SESSION_IDLE_TIMEOUT_MS) or a server restart (-32002: MCP session lost), clients can simply re-send initialize or toggle the MCP connection in client settings. In stdio mode, the first message on a pipe locks the protocol era for that subprocess. See the Client Quick Start Guide, Server Deployment Guide, and 2.5 → 2.6 Migration Guide.

  • Version Upgrades:

Development


Related MCP server: Doctah-MCP

中文

面向明日方舟同人创作 AI 助手的 MCP Server。通过 PRTS Wiki MediaWiki API 与自动同步的游戏数据,为 Claude Desktop、Claude Code、Chatbox 等 MCP 客户端提供泰拉世界观、干员档案、技能数值、关卡敌情与剧情文本的实时查询。

实现与版本线

从 3.x 起,PRTS-MCP 统一为仓库根目录下的原生 Rust 实现,并将 C 正则组件静态链接进预编译二进制中。游戏数据查询、Wiki 解析与 MCP 协议处理全部由 Rust 执行:

  • 预编译原生归档包与 Docker 镜像:开箱即用,无需安装任何语言运行时或编译器。

  • npm 包:提供轻量的 Node.js 启动桥(要求 Node >=22、npm >=10),自动拉起对应平台的预编译 Rust 二进制,无需安装 Bun。

  • 从源码构建:需要安装 Rust 工具链与 C 编译器。

版本线

版本

工具数

状态

公开稳定版(main)

3.1.1

24

原生 Rust 正式版,已发布至 npm(latest)、GitHub Releases 与 GHCR(:latest、:3)。

Rust 开发线(develop)

3.1.2-dev.0

24

3.x 主开发线。

lts/2.8

2.8.x

24

Python/TypeScript 长期维护线,维护至 2027-07-02(EOL)。

lts/1.7

1.7.x

32

Python/TypeScript 长期维护线,维护至 2027-07-02(EOL)。

通过 npm 安装时,请安装 prts-mcp(或指定精确版本 3.1.1)。若希望保留 2.x 的旧命令名(prts-mcp-ts、prts-mcp-ts-bun、prts-mcp-ts-stdio),可安装兼容包 prts-mcp-ts,它自 3.0.0 起同样运行 Rust 二进制。如需继续使用 2.8.x,请固定 prts-mcp-ts@lts-2.8 或 ghcr.io/3akhp/prts-mcp:2。详见路线图、2.x → 3.0 迁移指南与 2.8.1 旧版文档。

预编译二进制支持 Linux x64/ARM64(glibc >= 2.28)、Windows x64 与 macOS ARM64/x64(macOS 14.0+);暂不支持 Linux musl/Alpine 及其他 CPU 架构。Docker 镜像支持 Linux x64 与 ARM64。各平台的 ABI 基线与验证详情见原生平台说明。

快速开始

1. npm 安装(需 Node >=22、npm >=10)

# 全局安装并启动 Streamable HTTP 服务(默认监听 3000 端口):
npm install -g prts-mcp@3.1.1
prts-mcp

# 本地客户端以 stdio 子进程方式接入:
PRTS_TRANSPORT=stdio prts-mcp

# 若需保留 2.x 旧命令配置,可安装兼容入口包:
npm install -g prts-mcp-ts@3.1.1
prts-mcp-ts-stdio

免安装临时试用可直接通过 npx 启动:

  • HTTP 模式:npx -y prts-mcp@3.1.1

  • stdio 模式:npx -y --package=prts-mcp-ts@3.1.1 prts-mcp-ts-stdio

各入口的默认传输方式如下:

  • prts-mcp(原生二进制与 npm 主包):默认启动 Streamable HTTP,端点为 http://localhost:3000/mcp,健康检查为 /health。本地客户端拉起子进程时,设置 PRTS_TRANSPORT=stdio 切换为 stdio。

  • Docker 镜像(ghcr.io/3akhp/prts-mcp):默认使用 stdio;作为独立 HTTP 服务运行时,需显式传入 -e PRTS_TRANSPORT=http。

  • prts-mcp-ts 兼容命令:底层同样运行 Rust 二进制(无需安装 Bun),并保持 2.x 的固定传输行为——prts-mcp-ts 与 prts-mcp-ts-bun 固定为 HTTP,prts-mcp-ts-stdio 固定为 stdio。

2. Docker 运行

# 以 HTTP 模式后台运行镜像,并挂载数据卷:
docker run -d --name prts-mcp -p 127.0.0.1:3000:3000 -e PRTS_TRANSPORT=http -v prts-data:/data ghcr.io/3akhp/prts-mcp:3.1.1

3. 预编译原生归档包与源码构建

从 3.1.1 Release 下载对应系统与架构的归档包,校验 SHA-256 后解压(请完整保留解压目录内的 bin/ 与 data/ 相对结构),直接运行 bin/prts-mcp(Windows 为 bin\prts-mcp.exe)。从源码编译请执行 cargo build --locked --release --bins。

各大 MCP 客户端的零基础入门、配置片段与工具串联工作流请参阅Agent 与 MCP 零基础入门指南、客户端接入与快速上手指南和工具使用与同人创作工作流指南;服务器常驻部署、Docker 卷挂载与故障排查请参阅服务端部署与容器运维指南。

工具集

服务端共提供 24 个 MCP 工具(设置 IMAGES_ENABLED=false 会隐藏 operator_artwork,剩余 23 个):

工具

说明

search_prts(query, limit?)

关键词搜索 PRTS 维基词条,返回匹配标题列表

prts_page(page_title, action, ...)

读取词条正文或元数据;template 返回顶层模板的结构化、已渲染字段数据

get_operator_archives(name)

获取干员档案资料(中文名)

get_operator_voicelines(name)

获取干员语音记录(中文名)

get_operator_basic_info(name, action="basic", phase?, level?)

查询干员档案/天赋/基建技能(basic,默认)、战斗技能各等级效果(skills)或面板数值(stats);phase/level 仅用于 stats(中文名)

list_story_events(category?)

列出剧情活动,可选过滤:main(主线)、activities(活动)或 roguelike(集成战略)

list_stories(event_id, include_summaries?)

列出指定活动的章节(按官方顺序);include_summaries 附活动级概览 + 每章梗概

get_story_summary(story_key)

获取单章梗概(LLM 长摘要或官方一句话简介)

read_story(story_key, include_narration?)

读取单章完整台词

read_activity(event_id, include_narration?, page?, page_size?)

读取整个活动的完整剧情,支持分页

search(scope, pattern, max_results?)

在指定数据域执行全文正则搜索:scope ∈ operators / enemies / stages / items / building_skills / skills(基建/战斗技能跨干员反查)

search_stories(pattern, character?, line_type?, context_lines?, max_results?, event_id?)

在剧情对话、旁白和选项中执行全文正则搜索,支持按角色和台词类型过滤

list_enemies(threat_level?, limit?, offset?, full?)

列出敌方图鉴中所有敌人及其威胁等级和描述

get_enemy_info(name, stage_id?)

获取指定敌人的详细图鉴资料;传入 stage_id 时返回关卡级数值

get_stage_enemies(stage_id)

获取指定关卡实际出场敌人及关卡级等级/战斗属性

get_enemy_appearances(name, limit?, offset?)

反查指定敌人实际出现在哪些关卡

list_stages(chapter?, type?, limit?, offset?)

列出关卡,支持按章节/区域和关卡类型过滤

get_stage_info(stage_id)

根据关卡 ID 获取关卡详细信息

list_items(category?, limit?, offset?)

列出 item_table.json 中的物品/材料,支持按类别过滤和分页

get_item_info(name)

获取物品/材料详情、用途、获取方式、掉落、基建产出和商店关联

get_operator_memoirs(name)

解析干员密录的 story_key,便于后续 read_story 调用

find_character_appearances(name, scope?, max_events?)

查找角色在哪些章节/活动中开口(对话)或被提及(名字子串)

find_speakers_in(event_id)

列出指定活动中所有发言角色及其对话行数

operator_artwork(operator_name, action, artwork_id?, variant?)

列出干员立绘/时装(本地模式附带皮肤系列/获取方式等元数据)并获取图片变体(base64);默认走 MediaWiki,LOCAL_IMAGE=true 时使用 AKDP 本地资产

get_operator_basic_info(name) 默认返回干员基础档案(action="basic")。传入 action="skills" 可查询技能 Lv1–7 与专精效果;传入 action="stats" 可查询各精英阶段 Lv1/满级面板及信赖、潜能加成。如需查询特定等级面板,请同时传入 phase(0–2)与 level,例如 get_operator_basic_info("阿米娅", action="stats", phase=2, level=40)。phase 与 level 仅在 action="stats" 下有效,每次调用只返回对应 action 的内容。

输出通道

工具默认在 MCP content 字段中输出人类可读的 Markdown。支持消费 MCP 原生 structuredContent 的客户端,可通过环境变量 PRTS_OUTPUT_CHANNEL 将连接级输出通道设为 content(默认)、structured 或 both;HTTP 模式还支持通过 ?output_channel= 查询参数或 x-prts-output-channel 请求头按连接/请求覆盖。设计背景见 2.0 迁移指南,详细配置见环境变量参考。

立绘工具(operator_artwork)

operator_artwork 工具(2.5.0+)默认开启,通过 LOCAL_IMAGE 切换数据源模式:

变量

默认值

说明

IMAGES_ENABLED

true

主开关;设为 false 时不注册 operator_artwork(工具数 24 → 23)。

LOCAL_IMAGE

false

false = 从 PRTS MediaWiki 按需拉取(无需预先同步全量资产,但请求图片时仍会产生网络下载);true = 后台同步 AKDP 本地 PNG 资产包(GB 量级)。

PRTS_IMAGE_CACHE

true

MediaWiki 图片的内存 LRU 缓存(上限 256 MiB);仅在 LOCAL_IMAGE=false 时生效。

ORIGINAL_IMAGE

false

额外同步原图分辨率分片;仅在 LOCAL_IMAGE=true 时生效。

PRTS_IMAGE_DIR

~/.local/share/prts-mcp/images/

AKDP 立绘资产的本地存储目录(仅 LOCAL_IMAGE=true 时生效;Docker 下默认为 /data/images)。

默认配置无需额外准备,直接通过 MediaWiki 按需获取并缓存立绘。仅当需要本地全量离线立绘时,再开启 LOCAL_IMAGE=true。存储规划与完整环境变量说明见数据同步与立绘存储管理和环境变量参考。

数据源与自动同步

  • PRTS Wiki API (https://prts.wiki/api.php) — 泰拉世界观词条、阵营设定与剧情资料。

  • arknights-data-pipeline (3aKHP/arknights-data-pipeline) — 自建数据流水线,通过 GitHub Release 统一发布游戏数据表(zh_CN-excel.zip)、关卡战斗数据(zh_CN-levels.zip)以及带 LLM 摘要的剧情台词数据(zh_CN.zip)。

干员与表格数据存放在 gamedata 目录,关卡战斗数据存放在 gamedata-levels 目录,剧情数据存放在 storyjson 目录。服务启动监听后会立即在后台检查一次更新,之后默认每小时检查一次(PRTS_AUTO_SYNC_INTERVAL_SECONDS=3600,可在 60..604800 秒范围内调整,或设为 0 仅保留启动时检查)。

新版数据 Release 附带 manifest.json(遵循 prts-mcp-data/v1 契约),记录源端 versionId 以及各压缩包的大小与 SHA-256。校验不通过的归档会在激活前被拒绝;同时仍兼容不含 manifest 的旧版 Release。若下载、解压或校验失败,服务会继续使用上一代已激活的数据,不会中断现有查询。

GITHUB_MIRRORS 支持配置逗号分隔的 GitHub 下载备用前缀(自动去除首尾空白与末尾斜杠)。HTTP 客户端同时支持标准代理环境变量(HTTP_PROXY、HTTPS_PROXY、ALL_PROXY、NO_PROXY);使用镜像或代理不会跳过 manifest 与 ZIP 完整性校验。

公开发布的 Rust 原生归档包、Docker 镜像与 npm 包均内置经过校验的只读备用数据(含游戏表、关卡与剧情),首次同步完成前或离线环境下可直接查询。一旦可写用户数据目录或数据卷中存在完整的用户数据,服务优先读取用户数据,且后台同步只写入用户目录,不会修改安装包内的备用数据。从源码构建或使用 Cargo 源码包时依赖启动同步或显式配置的数据路径;crates.io 计划在 3.0 正式版发布后上架,Rust 版不再通过 PyPI 发布。

协议兼容性与版本迁移

  • 两代 MCP 协议(零配置无感自适应与并发混连):服务端无需配置任何协议切换开关,即可同时支持传统的有状态会话(initialize + Mcp-Session-Id)与 2026-07-28 无状态现代信封(请求内携带 _meta)。Streamable HTTP 模式下,同一个 /mcp 端点支持多个不同协议世代、不同输出通道的客户端同时连接;当 Legacy 会话因服务端重启或连续空闲满 24 小时(SESSION_IDLE_TIMEOUT_MS)被自动驱逐(返回 -32002: MCP session lost)时,客户端可直接重发 initialize 或在设置中关闭重开连接恢复。stdio 模式下,子进程连接上的首条消息决定该连接的协议世代。详见客户端接入指南、服务端部署指南与 2.5 → 2.6 迁移指南。

  • 版本迁移指南:

开发与贡献


Rust Compatibility / Rust 兼容性说明

Tool names, parameters, output channels, and data semantics match the frozen TS/v2.8.1 baseline, with seven approved implementation differences (D-001 through D-007, covering runtime identity, native diagnostics schema, and specific Unicode regex case-folding edges) documented in contracts/baseline.json. Full JSON Schemas for all tool inputs are recorded in contracts/tool-declarations.json.

3.x 的工具名、参数、输出通道与数据语义严格对齐 TS/v2.8.1 基线;7 项经批准的实现差异(D-001 至 D-007,涉及运行时标识、原生诊断结构及部分 Unicode 正则大小写折叠边界)完整记录于 contracts/baseline.json,所有工具的参数 Schema 见 contracts/tool-declarations.json。

License / 许可说明

Project source code is licensed under MIT; vendored native code retains its upstream license notices. Game data and PRTS Wiki content remain under their respective terms — see LICENSE, NOTICE, and native component notices.

项目源代码采用 MIT 许可证授权;随仓打包的原生组件保留各自的上游许可声明。明日方舟游戏数据与 PRTS Wiki 内容仍适用各自版权与授权条款,详见 LICENSE、NOTICE 与原生组件许可说明。

Available Tools

9 tools
get_operator_archivesA

获取指定干员的档案资料(使用游戏内中文名,如"阿米娅")。

NameRequiredDescriptionDefault
operator_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Adds naming convention hint but lacks disclosure of authentication, rate limits, error handling, or what happens if operator is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no waste. Front-loaded with action and resource. Efficient for a parameter with required name hint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained. Description provides basic context but could elaborate on what 'archive data' entails (e.g., background, skills? ). Adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, so description compensates by instructing to use the in-game Chinese name, adding meaning beyond the generic string type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (获取/obtain) and resource (干员的档案资料/operator archive data). It specifies to use the in-game Chinese name, which adds precision. Distinguishes from siblings like get_operator_basic_info and get_operator_voicelines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for retrieving archive data but no explicit guidance on when to use vs. alternatives. No mention of when not to use or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_operator_basic_infoA

获取指定干员的基本信息:职业、稀有度、所属、招募标签、天赋等(使用游戏内中文名,如"阿米娅")。

NameRequiredDescriptionDefault
operator_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description bears full burden. It lists return fields but does not disclose behavior for invalid names, error handling, or that it is read-only. Output schema exists but description alone is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with key information and an example. No redundant words, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, description is sufficient for basic usage. It covers what the tool returns and input format. Lacks mention of error scenarios or prerequisites, but tool is simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for the only parameter. The description adds essential meaning: it expects the in-game Chinese name (e.g., '阿米娅'), going beyond raw schema type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'get' and resource 'basic info of a specified operator', listing specific fields like class, rarity, affiliation. It distinguishes from siblings by specifying 'basic info' vs archives or voicelines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description instructs to use in-game Chinese names (e.g., 'Amiya'), which is helpful. However, it lacks explicit guidance on when to use this tool versus siblings like get_operator_archives or read_prts_page.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_operator_voicelinesA

获取指定干员的语音记录(使用游戏内中文名,如"阿米娅")。

NameRequiredDescriptionDefault
operator_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It only mentions the naming convention for the parameter but omits other behavioral traits such as authentication requirements, rate limits, error handling (e.g., if operator is not found), or any side effects. The description is insufficient for a complete behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the essential information. Every word contributes value without redundancy, making it highly efficient for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and has an output schema, so description does not need to explain return values. However, it lacks context on error handling, prerequisites (e.g., whether operator must exist), or additional behavioral constraints. It covers the most critical usage hint but leaves gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds crucial meaning by specifying that operator_name should be the in-game Chinese name (e.g., '阿米娅'), which is not present in the schema. This significantly aids correct parameter usage, though it does not cover formatting details like case sensitivity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves voice records of a specified operator (a specific resource) using the verb '获取' (retrieve/get). It distinguishes from siblings like get_operator_archives and get_operator_basic_info, which deal with other types of operator data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs using the in-game Chinese name (e.g., '阿米娅'), providing a clear usage guideline. However, it does not explicitly state when not to use this tool or compare it to alternatives, though the sibling context makes the distinction reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_storiesA

列出指定活动的所有剧情章节(按官方顺序排列)。

Args:
    event_id: 活动 ID,如 "act31side"(可从 list_story_events 获取)。
NameRequiredDescriptionDefault
event_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that output is ordered, but omits details about error handling, permissions, or side effects. This is insufficient for a tool with no safety annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with the purpose stated in a single sentence plus an args section. Every piece of text adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (one required string param, no enums, output schema exists), the description covers the core functionality adequately. It lacks guidance on invalid inputs or empty results, but the presence of an output schema mitigates the need for return value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description adds meaningful context: event_id is an activity ID (e.g., 'act31side') retrievable from list_story_events. This clarifies the parameter beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('列出所有剧情章节') and the resource ('指定活动'), with explicit mention of ordering ('按官方顺序排列'). It distinguishes from siblings like list_story_events and read_story.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that event_id can be obtained from list_story_events, providing a direct link for when to use this tool. However, it does not explicitly state when not to use it or mention alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_story_eventsA

列出明日方舟剧情活动列表。

Args:
    category: 可选过滤分类。"main" = 主线章节,"activities" = 活动剧情(含联动)。
              不填则返回全部活动。建议先调用本工具了解活动全貌,再用 list_stories 查询具体章节。
NameRequiredDescriptionDefault
categoryNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the tool as a list operation with optional filtering, but does not disclose behavioral traits such as data freshness, pagination, or error handling. For a simple read-only tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear purpose statement followed by a structured Args section. Every sentence provides necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and an output schema, the description covers everything needed: purpose, filter usage, and cross-tool guidance. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description explains the category parameter with possible values ('main', 'activities') and their meanings, adding value beyond the minimal schema. The single parameter is well documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists Arknights story events with an optional category filter ('main' or 'activities'), and distinguishes it from the sibling tool list_stories by suggesting using this for overview and list_stories for details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using this tool first for an overall view and then list_stories for specific chapters, providing clear usage context. It does not explicitly state when not to use it, but the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_activityA

读取整个活动的完整剧情台词(按官方章节顺序合并)。

适合需要了解完整活动故事的场景。单次活动文本量可能较大,可用 page 参数分批获取。

Args:
    event_id: 活动 ID,如 "act31side"。
    include_narration: 是否包含旁白,默认 True。
    page: 分页页码(从 1 开始)。不填则返回全部章节。
    page_size: 每页章节数,默认 5。
NameRequiredDescriptionDefault
pageNo
event_idYes
page_sizeNo
include_narrationNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

无注释,描述承担披露责任。提到文本量大可分页,但未说明权限、错误处理或返回格式。行为方面基本但不够全面。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

描述先提主要目的,再给出使用背景,最后逐参数说明。结构清晰,没有冗余信息,长度适中。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

解释了如何使用分页处理大量文本,涵盖了所有参数和基本行为。虽然有输出模式,但未提及返回内容的具体结构,不过对于读取工具已足够。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

描述中对每个参数都给出了解释和示例(如 event_id 的 'act31side'),补充了模式中缺失的语义(模式覆盖率0%),有效指导调用。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

明确指定了动作(读取)、资源(活动完整剧情台词)和范围(整个活动,按官方章节顺序合并)。与兄弟工具(如 read_story)自然区分开。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

提供了使用场景(需要了解完整活动故事)和分批获取的提示,但没有明确说明何时不使用或对比替代工具。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_prts_pageB

读取 PRTS 维基指定词条的纯文本内容。

NameRequiredDescriptionDefault
page_titleYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It only states output is 'plain text' but omits details like error handling, idempotency, required permissions, or page existence behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. However, some necessary details are omitted, so it's not perfectly balanced.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and an output schema, the description is minimally adequate but could be more complete by mentioning what happens on invalid input or additional behavioral aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain the single parameter 'page_title'. It only vaguely refers to 'specified entry', missing details like exact title format, case sensitivity, or special characters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'reads' and the resource 'plain text content of a specified entry on the PRTS wiki'. It distinguishes from sibling tools which are operator-specific or story-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like search_prts or the operator-specific tools. The description gives no context for appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_storyA

读取单章剧情的完整台词。

Args:
    story_key: 章节 key,如 "activities/act31side/level_act31side_01_beg"(可从 list_stories 获取)。
    include_narration: 是否包含旁白和场景描述,默认 True。
NameRequiredDescriptionDefault
story_keyYes
include_narrationNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explains the operation is a read and describes parameters, but does not disclose error handling, required permissions, or behavior for invalid input. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences plus bullet-like argument descriptions. Every sentence is necessary and front-loaded with the core purpose. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two parameters and an output schema exists. The description adequately covers what the tool does, the required and optional parameters, and hints at integration with list_stories. No additional context needed for the given complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining the purpose of include_narration (whether to include narration/scene descriptions) and provides an example and source for story_key. Adds significant value beyond the schema's type info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb ('读取' meaning read) and resource ('单章剧情的完整台词' meaning complete dialogue of a single story chapter). It distinguishes from siblings like list_stories (listing) and read_activity (reading activity data) by focusing specifically on dialogue content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete example for story_key and notes it can be obtained from list_stories, but does not explicitly state when to use vs alternatives or when not to use. Usage is implied rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_prtsB

搜索 PRTS 明日方舟中文维基词条。返回匹配的词条标题和摘要。

NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states 'search and return' without mentioning side effects, permissions, rate limits, or read-only behavior. Minimal transparency beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the action. No unnecessary words, every sentence provides value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple search tool, stating what it does and returns. However, lacks usage guidelines and parameter explanation, which are needed given the zero schema coverage and absence of annotations. The output schema exists but is not referenced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description does not explain the parameters. 'query' is somewhat obvious, but 'limit' is not mentioned, leaving its purpose unclear. The description fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches PRTS Arknights Chinese wiki entries and returns titles and summaries. It distinguishes from siblings like 'read_prts_page' by identifying it as a search function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like 'read_prts_page'. The description implies usage for searching but does not specify when not to use it or provide context for selection among siblings.

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.

  1. 9 tool updatesv0.2.14
    • Addedget_operator_archives
    • Addedget_operator_basic_info
    • Addedget_operator_voicelines
    • Addedlist_stories
    • Addedlist_story_events
    • Addedread_activity
    • Addedread_prts_page
    • Addedread_story
    • Addedsearch_prts
  2. 9 tool updatesv0.2.13
    • Removedget_operator_archives
    • Removedget_operator_basic_info
    • Removedget_operator_voicelines
    • Removedlist_stories
    • Removedlist_story_events
    • Removedread_activity
    • Removedread_prts_page
    • Removedread_story
    • Removedsearch_prts

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource and action: wiki search/page reading, operator data by type, and story navigation at event/chapter/activity levels. The overlap between read_story and read_activity is clear (single chapter vs full event), and list_story_events vs list_stories is also well separated by level.

Naming Consistency4/5

Tool names mostly follow clear verb_noun patterns: search_, read_, get_, list_. Minor inconsistencies exist, such as 'search_prts' vs 'read_prts_page' and 'list_story_events' vs 'list_stories', but the overall pattern is readable and predictable.

Tool Count5/5

Nine tools is a reasonable size for this wiki-focused server. The set covers wiki browsing, operator lookups, and story exploration without unnecessary fragmentation.

Completeness4/5

The story workflow is well covered from event list down to individual dialogue, and operator info is split into useful categories. Minor gaps exist, such as no explicit operator search/list or skill detail tool, but the generic wiki read/search tools provide a workaround.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    A MCP server that allows you to search and retrieve content on any wiki site using MediaWiki with LLMs 🤖. wikipedia.org, fandom.com, wiki.gg and more sites using Mediawiki are supported!
    2
    27
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search and access Arknights game data including operator information, enemy intelligence, skills, talents, and attributes through PRTS.wiki integration. Provides fuzzy search functionality for operators and enemies with clean Markdown output.
    9
    MIT