Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Api Patterns

ASecurity

N-central MCP fundamentals: User-API Token (JWT) authentication through Conduit, 1-based pagination with the totalItems/totalPages envelope, rate-limit behavior, preview-endpoint caveats, and on-prem server specifics.

48 stars
0 votes
0 copies
0 views
Added 10/2/2026
ai-agentsgonodedebuggingapi

Works with

cliapimcp

Security Analysis

A100/100

Scanned 10/2/2026

$npx -y skills add wyre-technology/msp-claude-plugins --skill api-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Api Patterns?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Api Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wyre-technology-api-patterns-4b30932c/badge)](https://www.skillsdirectory.com/skills/wyre-technology-api-patterns-4b30932c)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: "N-central API Patterns"
description: >
  N-central MCP fundamentals: User-API Token (JWT) authentication through
  Conduit, 1-based pagination with the totalItems/totalPages envelope,
  rate-limit behavior, preview-endpoint caveats, and on-prem server
  specifics.
when_to_use: >-
  When working with N-central authentication, the Conduit connection, pagination, rate limits, or
  preview-endpoint availability for the N-central MCP server. Use when: ncentral api, ncentral
  authentication, ncentral jwt, ncentral pagination, ncentral mcp, ncentral token, n-able api, or
  api-explorer.
---

# N-central MCP Tools & API Patterns

## Overview

The N-central MCP server exposes the N-able N-central REST API (`/api/*`)
for MSP technicians: devices, org units (service organizations, customers,
sites), active issues, scheduled tasks, custom properties, maintenance
windows, and access groups. Unlike SaaS RMMs, every MSP runs its own
N-central server — on-prem or N-able hosted — so all calls target a
per-tenant server FQDN.

## Connection & Authentication

The plugin talks to N-central through **Conduit** (`conduit.wyre.ai`). The
MCP client authenticates to Conduit with OAuth — no client-side environment
variables or headers. N-central credentials (a permanent **User-API Token**
JWT plus your server URL) are entered once in Conduit's connect UI; Conduit
stores them and injects them per-request as sidecar headers:

| Header (Conduit → sidecar, server-side) | Value |
|--------|-------|
| `X-NCentral-Server-URL` | Base URL of your N-central server (e.g. `https://ncentral.yourcompany.com`) |
| `X-NCentral-JWT` | The User-API Token JWT |

The MCP server handles upstream auth translation from those headers. If a
tool call fails with an authentication error, fix the credentials in
Conduit's connect page — not in the MCP client.

### How the token flow actually works

The JWT you supply is the *permanent* User-API Token generated in the
N-central UI (Administration → User Management → Users → user → API Access
→ Generate JSON Web Token). The MCP server exchanges it at
`POST /api/auth/authenticate` for a short-lived **access token (~1 hour)**
and **refresh token (~25 hours)**, and refreshes them transparently. You
never manage access/refresh tokens yourself — supply the JWT and server URL
and the server does the rest. Two constraints on the N-central side:

- The API user must have **MFA disabled** — N-central rejects API token
  authentication for MFA-enabled users.
- The token inherits the user's role and access groups. A least-privilege
  dedicated API user is strongly recommended.

Use `ncentral_validate_token` to confirm the token is valid and see which
user it authenticates as; `ncentral_server_info` reports the server version.

## Tool Navigation

Tools are exposed behind decision-tree navigation. Call `ncentral_navigate`
to move into a domain (orgs, devices, monitoring, tasks, custom-properties,
maintenance, access-groups), `ncentral_back` to go up a level, and
`ncentral_status` to see where you are and what is currently available.
`ncentral_health` works from anywhere.

## Pagination

List endpoints use 1-based page pagination:

| Parameter | Notes |
|-----------|-------|
| `pageNumber` | **1-based** (the first page is 1, not 0) |
| `pageSize` | Max **1000**; default varies by endpoint |
| `sortBy` | Field name to sort on |
| `sortOrder` | `asc` / `ASC` / `ascending` or `desc` / `DESC` / `descending` |

Responses arrive in an envelope:

```json
{
  "data": [ ... ],
  "totalItems": 4321,
  "totalPages": 5,
  "pageNumber": 1,
  "pageSize": 1000,
  "_links": { "nextPage": "...", "lastPage": "..." }
}
```

Always check `totalItems`/`totalPages` before claiming a result set is
complete; walk `pageNumber` up to `totalPages` (or follow `_links.nextPage`)
for full inventories.

## Rate Limiting

N-central returns **HTTP 429** when a client sends requests too quickly.
The MCP sidecar retries 429s with backoff automatically, so occasional
throttling is invisible; sustained parallel sweeps across large device
fleets will still slow down. Prefer server-side filters (`filterId`,
org-unit scoping) over client-side filtering of huge pages.

## Preview Endpoints

Several REST endpoints are published at N-able's **"preview"** stage —
their shape and availability vary by N-central release (this affects
active issues, scheduled tasks, maintenance windows, and custom properties
in older releases). If a tool returns 404 or an unexpected schema, check
what your server actually ships: the interactive Swagger UI at
`https://<your-server>/api-explorer` is the authoritative list for your
exact version.

## On-Prem Specifics

- **Per-server FQDN** — there is no shared cloud endpoint. Each MSP's
  N-central server has its own URL, and credentials are only valid there.
- **Conduit reachability** — Conduit must be able to reach the
  server. Firewalled or LAN-only on-prem servers need an inbound path
  (HTTPS/443) from Conduit.
- **Private CA certificates** — if the server presents a certificate from
  an internal CA, the MCP sidecar needs the CA bundle via
  `NODE_EXTRA_CA_CERTS`. Never disable TLS verification as a workaround.
- **Version drift** — hosted servers track current releases; on-prem
  servers may lag. Use `ncentral_server_info` and the api-explorer to
  confirm endpoint availability before debugging a "broken" tool.

## Error Handling

| Status | Meaning | Action |
|--------|---------|--------|
| 401 | JWT invalid, expired, or user has MFA enabled | Regenerate the token; verify MFA is off for the API user |
| 403 | Authenticated but role/access group forbids the resource | Check the API user's role and access groups |
| 404 | Unknown ID, or endpoint not in this N-central release | Re-list to confirm the ID; check `/api-explorer` for availability |
| 429 | Rate limit | Sidecar retries automatically; slow sweeps if persistent |

## Related Skills

- [devices](../devices/SKILL.md) - device inventory, filters, assets, lifecycle
- [organizations](../organizations/SKILL.md) - SO/customer/site hierarchy, custom properties
- [monitoring-tasks](../monitoring-tasks/SKILL.md) - active issues, job statuses, scheduled tasks

Attribution

WYRE-AIWYRE-AI
View sourceSee grades on GitHubMore from wyre-technology →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →