AGILEX Docs

ai.agilex.servicePublished by service.agilex.aiOfficial publisherv1.2.1Updated Nov 4, 2026

Official AGILEX robotics product docs: manuals, CAN protocol, firmware, FAQ. Read-only.

VerifiedStreamable HTTPWeb executableKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Read-only remote MCP server for AgileX Robotics product documentation, letting an assistant search manuals, locate passages and read pages as Markdown.

What you can do
  • Search the official AgileX docs full-text by product name and concept, with snippets and source URLs
  • Locate a specific passage, table or error code inside one long manual and get its offset
  • Read a documentation page as Markdown, paginated by offset and character limit
  • List documented pages within a space, or list all public spaces with page counts
When to use it
Useful before writing or explaining integration code for AgileX hardware such as piper, ranger, limo or scout, so the assistant consults real manuals for baud rates, CAN frame formats, pinouts, firmware steps and error codes instead of guessing. Also handy for looking up after-sales FAQ and troubleshooting procedures.
Requirements
A remote Streamable HTTP endpoint; no API key, OAuth or local process. Clients that only speak stdio need a bridge such as mcp-remote via npx. Network access to the service is required, and usage is rate limited per IP.
Before you install
Read-only: no write tools and nothing that can move a robot. Search is lexical, not semantic, and covers only publicly shared pages; internal spaces are excluded. Images and binary attachments are not included, so open the cited page URL to view them. Results marked as unreleased may still appear and should not be treated as settled.

Installation

In SourceWeft

  1. Open AGILEX Docs in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/ai.agilex.service%2Fdocs/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "agilex-docs": {
      "type": "http",
      "url": "https://service.agilex.ai/agilex-docs/mcp"
    }
  }
}

README

AGILEX Docs MCP

[MCP] [Registry] [License] [Auth]

Official product documentation for AgileX Robotics (松灵机器人) — user manuals, CAN 2.0B protocol references, firmware notes, SDK tech posts and after-sales FAQ for piper, pika, nero, ranger, limo, scout, bunker, hunter, tracer, umr, cobot_magic and aloha.

Point your AI coding assistant at this server before writing integration code for AgileX hardware, so it consults the real manual instead of guessing baud rates, frame formats or pinouts.

This repository documents the public interface. It covers the endpoint, the tool signatures and every client configuration. The indexing service that backs it is operated by AgileX and is not part of this repository.


Endpoint

MCP URLhttps://service.agilex.ai/agilex-docs/mcp
TransportStreamable HTTP — single endpoint, stateless
Protocol2025-11-25 (also answers 2025-06-18, 2025-03-26, 2024-11-05)
AuthNone. Read-only public docs, rate limited per IP
Registryai.agilex.service/docs
Docs pagehttps://service.agilex.ai/agilex-docs/
Healthhttps://service.agilex.ai/agilex-docs/health

No API key, no OAuth, no local process. If your client speaks Streamable HTTP, you only need the URL.


Quick start

Clients are listed in order of how common they are. Pick one.

#ClientSetup
1Claude Codeclaude mcp add --scope user --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
2Codex CLIcodex mcp add agilex-docs --url https://service.agilex.ai/agilex-docs/mcp
3Cursorone-click install, or the JSON below
4VS Code / CopilotCtrl+Shift+P → MCP: Add Server → HTTP → paste the URL
5Anything stdio-onlynpx -y mcp-remote https://service.agilex.ai/agilex-docs/mcp
bash
# 1) Claude Code — all projectsclaude mcp add --scope user --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
# 2) Codex CLI — writes ~/.codex/config.tomlcodex mcp add agilex-docs --url https://service.agilex.ai/agilex-docs/mcp

Cursor one-click:

cursor://anysphere.cursor-deeplink/mcp/install?name=agilex-docs&config=eyJ1cmwiOiJodHRwczovL3NlcnZpY2UuYWdpbGV4LmFpL2FnaWxleC1kb2NzL21jcCJ9

Any client that reads mcpServers (Cursor, Claude Desktop, Cline, Windsurf, Cherry Studio, Continue, Zed, LibreChat, Dify …):

json
{  "mcpServers": {    "agilex-docs": {      "url": "https://service.agilex.ai/agilex-docs/mcp"    }  }}

Full per-client instructions: docs/CLIENTS.md.


Tools

Five read-only tools. The names are deliberately verb_noun so a model can pick the right one without reading the schema first.

ToolPurposeParameters
search_docsFull-text search. Start here. Locate before reading.query (include the product name), limit (1–25, default 8), space (optional)
find_in_docLocate a passage inside one long manual; returns absolute offsetdoc_id, query, limit (1–10, default 5)
get_docRead one page as Markdown, paginateddoc_id, max_chars (default 20 000, honoured as requested, max 120 000), offset
list_docsInventory of a single spacespace (optional), limit (1–300, default 100), offset (≥0)
list_spacesAll public spaces with page counts—

search_docs returns doc_id, title, space, url, score, chars and a snippet. Then use find_in_doc to jump to the passage you need and read it with get_doc(doc_id, offset=…). If the response has truncated: true, call get_doc again with next_offset.

Manuals open with a cover page and preface, so reading from offset 0 rarely answers a specific question — that is why the search-then-locate-then-read path is the recommended one rather than get_doc alone.

max_chars is honoured as requested (1–120 000), and the applied value is echoed back as max_chars in the response. There used to be an undocumented 2000-character floor; a caller paging in 1000-character steps would then re-read overlapping text without any indication, so it was removed.

Field semantics

count means different things in different tools, deliberately:

ToolcountAlso returned
search_docsnumber of results in this replyresults[]
list_docsnumber of docs in this pageoffset, docs[] (no total — use list_spaces)
find_in_doctotal passages matchedreturned, matched_terms, missing_terms

find_in_doc(limit=1) can therefore return count: 24 with one hit — returned tells you what is in the array. matched_terms / missing_terms make partial matches explicit instead of silently ignoring words the page does not contain.

Numeric parameters declare their bounds in the schema: limit 1–25 (search), 1–10 (find_in_doc), 1–300 (list_docs); max_chars 1–120000; offset ≥ 0. An out-of-range value is a validation error, not a silent clamp.

A result whose title carries a 【未发】 / 【暂不对外】 marker is still searchable — whether it is published is the documentation owner's call, and the code does not blacklist by keyword — but the entry carries status_note so a model does not cite unreleased material as settled.

Why find_in_doc exists

13% of the corpus needs pagination and the longest page is 162 000 characters; locating one CAN frame table in that by paging with get_doc costs nine round trips. find_in_doc scores paragraphs and returns their absolute offsets, so a single get_doc(doc_id, offset=…) lands on the table.

Pass the concept as query, not the product name. Terms that already appear in the page title are ignored: search_docs picked the page by them, so repeating them only dilutes the ranking. This is measurable — on the RANGER MINI 3.0 manual, query="RANGER MINI 3.0 CAN 波特率" returned 44 passages with "1.1 产品列表" on top, while query="CAN 波特率" returned 2 with "3.2 CAN接口协议" on top.

Scoring is weighted by corpus-wide document frequency, not raw term count: can appears in 138 pages (weight 1.25) while 波特率 appears in 39 (weight 2.29). If the query contains a distinctive term that the page does not contain, the tool returns zero hits and says so — otherwise English manuals produced 76 meaningless can matches for the query "CAN 波特率". A query made only of generic terms (e.g. just CAN) still returns matches.

Response shape

jsonc
// search_docs("piper CAN 波特率"){  "query": "piper CAN 波特率",  "count": 3,  "results": [    {      "doc_id": "01a06659-2d4e-7029-bc64-63f9352b34a6",      "title": "PIPER X 用户手册(CN)",      "space": "AGX-机械臂产品手册",      "url": "https://kb.agilex.ai/s/agx-robot-arm-products-cn-en/p/pWVjLJsYc0",      "score": 18.42,      "chars": 13264,      "snippet": "...CAN通信标准采用的是CAN2.0B标准,通讯波特率为1000K..."    }  ]}
jsonc
// get_doc(doc_id="01a06659-…", max_chars=2000){  "doc_id": "01a06659-2d4e-7029-bc64-63f9352b34a6",  "title": "PIPER X 用户手册(CN)",  "url": "https://kb.agilex.ai/s/agx-robot-arm-products-cn-en/p/pWVjLJsYc0",  "chars": 13264,  "offset": 0,  "truncated": true,  "next_offset": 2000,  "content": "..."}
jsonc
// find_in_doc(doc_id="01a06659-…", query="波特率"){  "doc_id": "01a06659-2d4e-7029-bc64-63f9352b34a6",  "title": "PIPER X 用户手册(CN)",  "url": "https://kb.agilex.ai/s/agx-robot-arm-products-cn-en/p/pWVjLJsYc0",  "chars": 13264,  "query": "波特率",  "count": 1,  "hits": [    {      "offset": 12101,                // ← feed straight into get_doc      "heading": "6 机械臂CAN协议",      "score": 45.85,      "matched": ["波特", "特率"],      "excerpt": "…通讯波特率为1000K,报文格式采用MOTOROLA(MSB)格式…"    }  ],  "hint": "用 get_doc(doc_id, offset=hit.offset) 读这一段前后;offset 是全文绝对位置。"}

url always points at the original page — cite it so the user can verify.


Client configuration

Claude Code
bash
# all projectsclaude mcp add --scope user --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
# this project only (writes .mcp.json, can be committed)claude mcp add --scope project --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
claude mcp list
Codex CLI
bash
codex mcp add agilex-docs --url https://service.agilex.ai/agilex-docs/mcp

or ~/.codex/config.toml:

toml
[mcp_servers.agilex-docs]url = "https://service.agilex.ai/agilex-docs/mcp"

Inside Codex, /mcp lists active servers. Codex uses the server's instructions field as global guidance, so the search-then-read workflow is already in place.

Cursor

.cursor/mcp.json in the project, or ~/.cursor/mcp.json globally:

json
{  "mcpServers": {    "agilex-docs": {      "url": "https://service.agilex.ai/agilex-docs/mcp"    }  }}

Reload the window (Ctrl+Shift+P → Reload Window). Settings → MCP should list agilex-docs with 5 tools.

VS Code / Copilot

.vscode/mcp.json — note the top-level key here is servers, not mcpServers:

json
{  "servers": {    "agilex-docs": {      "type": "http",      "url": "https://service.agilex.ai/agilex-docs/mcp"    }  }}

Or Ctrl+Shift+P → MCP: Add Server → HTTP → paste the URL.

Claude Desktop (stdio bridge)

Claude Desktop only speaks stdio, so bridge the endpoint with mcp-remote:

json
{  "mcpServers": {    "agilex-docs": {      "command": "npx",      "args": ["-y", "mcp-remote", "https://service.agilex.ai/agilex-docs/mcp"]    }  }}

Quit and reopen the app completely after saving.

Cherry Studio

Settings → MCP Servers → Add → type streamableHttp, URL as above. Cherry Studio also accepts the mcpServers JSON directly.

DeepSeek Harness (DSH)

DSH connects through @deepseek-ai/dsh-mcp-client, configured as a Cordis overlay:

yaml
- insert:    - id: agilex-docs      name: '@deepseek-ai/dsh-mcp-client'      config:        serverName: agilex-docs        transport: streamable-http        url: https://service.agilex.ai/agilex-docs/mcp
bash
dsh web --patch "$PWD/examples/agilex-docs.cordis.yml"

Tools appear as mcp__agilex-docs__search_docs.

ChatGPT custom connector

Paid plan, web only: Settings → Connectors → Advanced → enable Developer mode → Create → URL above, authentication No authentication.


Example prompts

I need a CAN control script for the piper arm. First call search_docs with "piper CAN 报文", then get_doc on the best hit, and write the code using the frame format and baud rate from the manual. Cite the manual URL in a comment.

Our ranger mini throws a chassis error code. Search the after-sales FAQ for the code, quote the troubleshooting steps and link the page.

Because the server ships an instructions block telling the model to search first and cite URLs, the workflow usually happens without any extra prompting.


Scope and data

The corpus covers product documentation that is publicly accessible at https://kb.agilex.ai. Internal spaces are excluded: the service reads only publicly shared content and never authenticates, so internal documents cannot be reached through this endpoint.

MCP access therefore does not depend on the visitor login on the knowledge base. Search and reading work anonymously; only the human-facing page url redirects to a visitor login (that gate exists for access logging, not authorization).

When a query names a product (pika 固件升级, ranger CAN 波特率), results are restricted to that product's documents. If the product has not documented the topic, the reply is an empty result set with a hint saying so — it never falls back to another product's manual. Cross-product fallback is the dangerous failure mode here: a user could follow PiPER flashing steps on a PIKA.

Pages with content263
Of those, ≥500 chars of prose242 (substantial in /health; a length statistic, not a content check)
Container / empty entries84 (excluded from search)
Spaces26
Characters~3.0 M
Refreshdaily 05:20 Asia/Shanghai
LanguagesChinese and English

The knowledge base also contains folder pages and placeholder pages with no body text. These are excluded from search results: a folder titled "PIKA固件升级" would otherwise outrank real content for that query and return an empty page. They remain listable through list_docs, and get_doc on one returns empty: true with a hint rather than 0 characters.

New public spaces are added automatically; withdrawn shares are removed on the next refresh.


Rate limits

ScopeLimit
Per IP, per minute60 requests
Per IP, per day3 000 requests
Over limitHTTP 429 + Retry-After

Higher quota or a dedicated endpoint: contact AgileX (see Feedback).


Limits

  • Read-only. No write tools; nothing here can move a robot.
  • Images are not inlined. Attachment URLs on the source pages are signed with a short TTL, so images render as (图:caption); open the page url to view them.
  • Binary attachments (PDF/XLSX) in public spaces are not parsed — page bodies only.
  • Lexical matching, not semantic. Rephrase if a term misses.
  • One product family per query works best; cross-product questions need multiple searches.

Verify it works

bash
# healthcurl -s https://service.agilex.ai/agilex-docs/health | jq
# MCP handshake — the reply is text/event-stream, so strip the "data: " prefix# before piping to jq (piping SSE straight into jq fails with a parse error)curl -s -X POST https://service.agilex.ai/agilex-docs/mcp \  -H 'Content-Type: application/json' \  -H 'Accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}' \  | sed -n 's/^data: //p' | jq '.result.serverInfo'
# full round trip (initialize → tools/list → search → find_in_doc → get_doc)./scripts/smoke-test.sh
# the Chinese README as plain text (same source as README.zh-CN.md)curl -s https://service.agilex.ai/agilex-docs/readme.md | head

Repository layout

README.md                    this fileREADME.zh-CN.md              Chinese version; also served at /agilex-docs/readme.mdserver.json                  official MCP Registry manifestLICENSE                      MIT (documentation + manifest)docs/CLIENTS.md              per-client setup, long formexamples/                    copy-paste configs per clientscripts/smoke-test.sh        end-to-end check against the live endpoint

Where to find it

DirectoryEntryLink
ModelScope 魔搭Chinese listing, Cursor one-click installhttps://modelscope.cn/mcp/servers/Vicious/agilex-docs
Official MCP Registryai.agilex.service/docs v1.2.1https://registry.modelcontextprotocol.io/?q=agilex
GlamaTDQS A (4.3/5)https://glama.ai/mcp/connectors/ai.agilex.service/docs
GitHubthis repository, MIThttps://github.com/wgjsg/agilex-docs-mcp

Search term inside any directory: agilex.

The endpoint is fixed, so no directory listing is required to use it.


Feedback

Missing or wrong document → contact AgileX support through https://www.agilex.ai/ and include the page URL.

Issues about this repository (manifest, docs, client configs) → open an issue here. Issues about document content → the support channel, since the docs live in the internal knowledge base and this repo cannot edit them.


License

MIT — see LICENSE. The license covers the documentation and manifest in this repository. The documentation content served over MCP remains the property of AgileX Robotics.

Source: README.md at commit 98f825a

Tools

5

search_docs

Full-text search over the official AGILEX product documentation. Use this first for any question about AGILEX hardware: pinouts, CAN protocol details, baud rate, firmware upgrade, error codes, LED/beep meanings, installation, calibration, SDK usage. Args: query: Chinese or English keywords. Include the product name (piper / pika / nero / ranger / limo / scout / bunker / hunter / tracer / umr) plus the concept, e.g. "piper CAN 波特率". limit: 1-25 results, default 8. space: optional space slug or name fragment to narrow the search, e.g. "agx-chassis-manual-cn-en" or "底盘使用手册". Returns JSON: {query, count, results:[{doc_id,title,space,url,score,chars,snippet}]}. ``count`` is the number of results in this reply (0-``limit``). A result whose title carries 【未发】/【暂不对外】 includes ``status_note``. ``doc_id`` is what ``get_doc`` expects.

Parameterslimitqueryrequiredspace

find_in_doc

Locate a passage *inside* one manual, without paging through it. Use this after ``search_docs`` whenever you need a specific table, command or error code rather than the whole page — including short documents, because manuals commonly open with a preamble and page 1 rarely answers a question. It returns the exact ``offset`` of each match, so one ``get_doc(doc_id, offset=...)`` lands on the right section. Prefer this over repeatedly calling ``get_doc`` with increasing offsets. Args: doc_id: id from ``search_docs`` (also accepts the page slug). query: the *concept*, not the product name — e.g. "波特率" or "急停 接线". Terms that already appear in this page's title are ignored, because ``search_docs`` picked the page by them; passing the product name again only adds noise. Generic words that appear in nearly every manual are down-weighted, so one distinctive term is enough. limit: 1-10 passages, default 5. Matching is OR, not AND: a passage is returned when it contains at least one term with enough weight. Terms that are absent from this page therefore do **not** force a zero result — check ``missing_terms`` to see which of your words this page never mentions, and ``matched_terms`` for the ones it does. A query made only of stop words (or nothing) returns ``count: 0`` with a hint. Returns JSON: {doc_id,title,space,url,chars,query,count,returned, matched_terms,missing_terms,hits:[{offset,heading,score,matched,excerpt}], hint}. ``count`` is the total number of matched passages; ``returned`` is how many are in ``hits`` (capped by ``limit``). ``heading`` is the nearest heading above the passage; ``offset`` is absolute in the page body.

Parameterslimitqueryrequireddoc_idrequired

get_doc

Read one documentation page as Markdown. Call this with a ``doc_id`` returned by ``search_docs`` (or a slug such as ``ymZimX7JLe``). Manuals are often 20k-60k characters, so this tool paginates: if the reply has ``truncated: true`` and a ``next_offset``, call again with that ``offset`` to continue. Do not re-request the same offset. Args: doc_id: id from search_docs (also accepts the page slug). max_chars: characters per call, default 20000, max 120000. offset: start position, default 0. Returns JSON: {doc_id,title,space,url,chars,offset,returned,max_chars, truncated,next_offset,updated_at,content}. Always cite ``url``. If the page has no body (folder or unwritten page), the reply has ``empty: true`` and a hint — do not retry with other offsets.

Parametersdoc_idrequiredoffsetmax_chars

list_docs

List documented pages, optionally inside one space. Use when the caller wants an inventory ("what manuals exist for ranger") rather than an answer. Args: space: optional space slug or name fragment. limit: 1-300, default 100. offset: pagination offset, must be >= 0. Returns JSON: {space, count, offset, docs:[{doc_id,title,space,url,chars}]}. ``count`` is the number of docs in this page; there is no total field. ``count`` is the number of docs in this page; compare with ``limit`` to decide whether to request the next page. There is no total field — use ``list_spaces`` for per-space counts.

Parameterslimitspaceoffset

list_spaces

List the public documentation spaces with page counts. Call this when the caller is unsure which product family a document belongs to, or to explain coverage. Returns JSON: {count, spaces:[{space,name,docs,chars}]}.

Takes no parameters.

Version history

3
  1. v1.2.1LatestNov 4, 2026
  2. v1.1.0Nov 4, 2026
  3. v1.0.2Nov 3, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts