@fruggr/zendesk-mcp-server 2.14.2 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -155,25 +155,47 @@ The full tool-by-tool reference — every tool with its description and its
155
155
 
156
156
  Beyond tools, the server hands an LLM the structural context it needs to work
157
157
  against *your* Help Center — so it stops guessing locales or fuzzy-matching
158
- section names and uses real IDs instead. This is delivered through two
159
- MCP-native channels (both active only when the `help_center` namespace is, and
160
- disabled together with `--no-topology`):
158
+ section names and uses real IDs instead. This is delivered through MCP-native
159
+ channels (all active only when the `help_center` namespace is), each fetched
160
+ **with the caller's own token** so it respects that user's read permissions:
161
161
 
162
162
  - **`instructions`** (sent on `initialize`): a short, static blob auto-loaded by
163
163
  compliant clients. It names the subdomain and points at the topology resource.
164
164
  - **`zendesk-hc://topology`** (a pull-only [MCP resource](https://modelcontextprotocol.io/docs/concepts/resources)):
165
165
  read on demand, it returns Markdown describing the active locales (and the
166
166
  default), the category → section tree with IDs, the visibility user segments,
167
- the permission groups, and the calling user's role. It is fetched **with the
168
- caller's own token**, so it respects that user's read permissions. Listing the
169
- permission groups and user segments needs Guide-admin / Help Center manager
170
- rights; with a content-editor token those two sections are marked *unavailable*
171
- (not empty) and the rest still renders reuse those IDs from an existing
172
- article (`get_article`) instead. On a very large Help Center the section tree is
173
- summarized (per-category, with a pointer to `list_sections`) to stay concise.
174
-
175
- Clients that don't consume `instructions` or `resources` simply ignore them
176
- the feature degrades silently. Use `--no-topology` to turn both off server-wide.
167
+ the permission groups, and the calling user's role. Listing the permission
168
+ groups and user segments needs Guide-admin / Help Center manager rights; with a
169
+ content-editor token those two sections are marked *unavailable* (not empty) and
170
+ the rest still renders reuse those IDs from an existing article (`get_article`)
171
+ instead. On a very large Help Center the section tree is summarized (per-category,
172
+ with a pointer to `list_sections`) to stay concise.
173
+ - **`zendesk-hc://article/{id}`** (pull-only [MCP resources](https://modelcontextprotocol.io/docs/concepts/resources)):
174
+ two distinct capabilities. **Read-by-id** — any article id can be read on demand,
175
+ returned as Markdown (a cheap single fetch, no preloading). **Promoted pre-listing**
176
+ the resource's listing surfaces the promoted (*featured*) articles so a user can
177
+ pin one in clients that support resource pinning / @-mention, and the companion
178
+ `list_promoted_articles` tool returns the same set. Clients that don't support
179
+ resources ignore these silently.
180
+ <br>**Cost:** only the *pre-listing* costs requests — finding promoted articles has
181
+ no server-side filter, so it scans article pages (one Zendesk API request per page,
182
+ capped). The resource listing is cached briefly per session (repeated `resources/list`
183
+ calls coalesce); the `list_promoted_articles` tool performs a fresh scan on every
184
+ call. It runs only on a client's `resources/list` or a tool call, never at connect,
185
+ and consumes no LLM context until an article is pinned/read. Read-by-id costs one
186
+ fetch, only when a specific article is opened. See
187
+ [`ZENDESK_ARTICLE_RESOURCES_SCAN_MAX_PAGES`](docs/configuration.md#zendesk_article_resources_scan_max_pages).
188
+
189
+ The `instructions` blob and the topology resource are toggled together with
190
+ `--no-topology`. The **promoted pre-listing** is toggled independently with
191
+ `--no-promoted-articles` — which turns off the resource `list` scan **and** the
192
+ `list_promoted_articles` tool, so the server makes zero preloading requests;
193
+ **reading a known article by id stays available** (it never preloads). Clients that
194
+ don't consume `instructions` or `resources` simply ignore them — the feature
195
+ degrades silently. The `zendesk-hc://` URI scheme is the default; a deployer can
196
+ brand it with
197
+ [`--hc-resource-scheme` / `HC_RESOURCE_SCHEME`](docs/configuration.md#hc_resource_scheme)
198
+ (e.g. `wiki` → `wiki://topology`, `wiki://article/{id}`).
177
199
 
178
200
  ## Prerequisites
179
201