Model Context Protocol server for Datto SaaS Protection (Backupify) — provides tools for M365/GWS backup status, restores, and seat management
Server demonstrates solid fundamentals: all 9 tools have clear action-verb names (list_, get_, queue_), descriptions (avg 120 chars), and explicit JSON schemas with typed parameters. Strengths: elicitation support for optional params (clientId, includeArchived, date range), destructive tool flagged with confirmation requirement, resource integration for seat cards. Gaps: output schemas undocumented (no return type specs), error handling lacks recovery guidance, parameter descriptions could be more prescriptive (e.g., format constraints for ISO 8601 dates), no per-tool permission scopes declared.
Get license usage / seat counts vs purchased for a client.
Check the status / progress of a queued restore.
Get details for a single seat by ID.
List activity log entries for a client. If date range is omitted, the user will be prompted.
List backup runs / snapshots for a seat.
List all customer organizations protected by Datto SaaS Protection.
Output schemas not documented. Tools return data but LLMs cannot infer response structure, field names, or chaining IDs needed for downstream calls.
Parameter descriptions lack format constraints. ISO 8601 date params (since, until) should specify format explicitly: 'ISO 8601 datetime string (e.g., 2024-01-15T10:30:00Z)' with min/max date guidance.
No permission scopes declared. Tools should declare required permissions (e.g., 'read:backup', 'write:restore') for least-privilege agent configuration and audit clarity.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
List protected domains under a client. If clientId is omitted, the user will be prompted to pick one.
List seats (mailboxes/users) in a domain. Toggle includeArchived to see deactivated seats.
Queue a restore for a seat. DESTRUCTIVE: writes data back into the target tenant. The destination user must have appropriate Microsoft Graph / Google API permissions for the restore to land. Requires explicit confirmation.
Error handling lacks recovery guidance. No documented error responses or actionable next steps (e.g., 'If client not found, call datto_saas_list_clients to discover valid IDs').
Pagination not explicit. list_clients accepts 'limit' but no offset/cursor or total_count documented. Large result sets risk context window exhaustion.