CONTENT MCP
Content MCP
Connect to the content MCP
Use MCP to find articles, read the full catalog, inspect stored content, query visits, publish, withdraw or restore articles. The former knowledge and news HTTP OpenAPI endpoints have been retired. MCP itself uses Streamable HTTP transport.
| Environment | Endpoint |
|---|---|
| Production | https://project.xiaotunqifu.com/api/openapi/mcp |
| Test | https://beta.boilingwater.cn/api/openapi/mcp |
Configure the endpoint in a remote MCP client with Authorization: Bearer <token>. Obtain a read or publishing token from your administrator. Keep tokens out of browser code and public files. OAuth login is not provided.
Find the right article
Call content_search with an English or Chinese description, title, URL or ID:
{"query":"Find the article about remote experts helping field technicians","kind":"all","limit":10}
query accepts 2–300 characters. kind is all (default), knowledge or news; limit defaults to 10 and is capped at 50.
Results include the actual id, kind, title, summary, state, path, matchedTerms and ranking score. Hidden and withdrawn records remain searchable. Matching uses tokens in titles, summaries and tags, rather than full-text or vector semantic search. Treat results as candidates: confirm the ID and body with a detail tool before changing publication state.
Read tools
| Tool | Purpose |
|---|---|
content_search | Locate article IDs from a description |
news_list | Browse the complete news, perspectives and video catalog |
news_detail | Read a stored record and its body |
news_statistics | Query news and video visits |
knowledge_list | Browse bilingual knowledge articles |
knowledge_detail | Read both language versions |
knowledge_statistics | Query knowledge article visits |
Lists accept page, size, version, id, q and visibility. Page size is capped at 100. q is a text filter; use content_search for descriptions. Pin the first returned version when fetching subsequent pages. If the version changes, restart pagination.
News types are 1 (news), 2 (perspectives, including historical professional articles and case analyses), 3 (video), and 4 (legacy professional articles). News visibility values are all, visible, hidden, withdrawn and unlisted. Knowledge visibility values are all, published, hidden and withdrawn. Lists include all stored statuses by default.
Detail tools require id and optionally version. Reading withdrawn content does not restore it. Code-maintained guides and case pages are outside these catalogs. Statistics support IDs, date ranges and pagination; consult the tool schema for available filters. Historical visitor coverage may be incomplete.
Publishing tools
Publishing tokens expose five additional tools: news_create, news_update, knowledge_create, knowledge_update and knowledge_sync.
Bilingual knowledge articles
knowledge_create requires a stable, unique ID beginning with faq-api-, plus zh and en objects. Each language object contains q (title), summary, category, tags (array), updatedAt (ISO date-time) and a (Markdown body). An optional image must be a public HTTPS image URL. Use the URLs returned by publication rather than deriving a slug from the title.
News, perspectives and videos
news_create accepts id, type, title, description, createTime and updateTime. Use a 16–19 digit string ID starting with 8. Supply either markdown or HTML content, not both. Videos may use type: 3 with url. labels is an array of tags. A cover image is optional; supplied images are checked for reachability, type and size. Chinese daily digest titles begin with 【今日资讯】 exactly once.
Creation adds new records. It does not overwrite a different body under an existing ID. Retry an uncertain outcome with the same ID and identical content.
Hide, withdraw and restore
Call knowledge_update or news_update with:
{"id":"faq-api-example-20261024","state":"withdrawn","reason":"Editorial review required"}
| State | Discovery | Original URL |
|---|---|---|
published | Listed and searchable | Readable |
hidden | Removed from discovery | Still readable |
withdrawn | Removed from discovery | Body unavailable |
Provide a reason of 1–1000 characters. Omitting state defaults to hidden. Knowledge changes apply to both languages and historical aliases while preserving the original content for restoration. Withdrawing news stops access across supported channels; use hidden for website discovery only.
Visibility reductions may notify the configured recipient. published: true means a snapshot was activated, not that every follow-up action succeeded. If status is pending or pending is non-empty, retry the same ID, state and reason to complete search, cache or notification work. Report completion only when status: complete and pending is empty. Restore with state: published.
knowledge_sync requires the exact current published version. checkOnly: true checks readiness without writing the search index.
Node.js client
Download the MCP client. Keep tokens in the calling environment:
import { callContentTool } from './content-mcp-client.mjs';
const result = await callContentTool('content_search', {
query: 'Remote expert assistance for field technicians',
limit: 5,
}, { token: process.env.OPENAPI_MCP_READ_TOKEN });
console.log(result.records);
Use OPENAPI_MCP_WRITE_TOKEN for publishing. The client handles JSON and SSE responses, throws on tool errors and never falls back to the retired API. The service is stateless and does not wrap responses in the regular business API status/data envelope.