Unsupported open-source example MCP server for N-able Passportal using session-based authentication. Not an official N-able product.
30 tools with consistent verb-noun naming (get_, list_, create_, update_, etc.). All tools have descriptions (avg ~120 chars, within baseline 34-392). Input schemas present for all tools with type declarations. However, parameter descriptions are sparse, many lack detail on constraints, formats, or valid ranges. Output schemas are not documented. Error handling is minimal; no recovery guidance or actionable error messages visible in tool definitions. Security is well-handled (no credentials in params, session-based auth), but composition could be tighter, some tools like update_document and update_article have overlapping concerns. Pagination support is present (limit/page params) but inconsistently applied.
Authenticate with Passportal using email, password, and 6-digit MFA code. Establishes a session and acquires CSRF/XSRF tokens for write operations.
Check the current session status and authentication state. Reports whether credentials are configured and if the session is active.
Create a new article (DigiDoc) for a client with title, content, and optional metadata.
Create a new client in Passportal with name and optional phone number.
Create a new domain record for a client with domain name and optional metadata.
Disable one or more clients by setting their state to inactive.
Discover the schema for a document template by probing a sandbox document. Returns attribute definitions for the template.
Output schemas not documented. Tools return JSON but LLMs cannot infer field names, types, or structure. Forces agents to guess at response shape and risks parsing errors.
Parameter descriptions lack constraint details. E.g., 'limit' and 'page' have no min/max bounds; 'state' has no enum values listed; date parameters lack format specification (ISO 8601?). LLMs cannot validate inputs without explicit constraints.
No error handling guidance in tool definitions. Handlers.js exists but error messages and recovery paths are not visible in tool specs. Agents cannot self-correct on failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | <=2025-11-25 | v2 |
Enable one or more clients by setting their state to active.
Retrieve a specific article by ID for a client. Returns wrapped content with untrusted-content warnings.
Retrieve linked items for a specific article.
Retrieve detailed information about a specific client by ID.
Retrieve an overview dashboard for a specific client.
Retrieve diagnostic information about the server, configuration, session state, and tenant connection. Redacted bundle safe to share—contains no secrets, credentials, or tenant data.
Retrieve a specific document by ID. Returns wrapped content with untrusted-content warnings.
Retrieve the count of documents for a specific client.
Retrieve items linked to a document, optionally filtered by type.
Retrieve the schema for a specific document, including attribute definitions and field types.
Retrieve a summary of expiring items across the tenant (domains, certificates, licenses, etc.).
Retrieve items requiring attention for a client, with pagination support.
Retrieve items that can be linked to articles or documents, optionally filtered by type.
Retrieve password health metrics for the tenant.
Retrieve recently modified items across the tenant.
Retrieve aggregate counts for the tenant (clients, documents, articles, etc.).
Retrieve user activity logs for a date range.
List articles (DigiDocs) for a client with optional search query, limit, page, and state filter.
List Passportal clients with optional filtering by state, limit, and page.
List domains for a client with optional limit and page parameters.
Update an existing article with new title, content, and optional metadata.
Update an existing client's name and/or phone number.
Update a document's metadata including name, description, tags, attributes, and links. This is a partial update—omitted keys are preserved.
Overlapping tool responsibilities. update_document and update_article both modify metadata (name, description, tags, links). No clear distinction when to use each. Agents may pick wrong tool.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) not present. Agents cannot infer which tools are safe to retry or have side effects without explicit hints.