A CLI tool for managing Tailscale networks via the Tailscale API, providing commands for device management, ACL configuration, contacts, and subnet route analysis
Server has 25 tools with visible schemas and descriptions, but quality is inconsistent. Naming follows verb_noun convention (device_list, acl_get, auth_login) which is good. However, descriptions vary widely: some are clear (device_list: 'List all devices in the tailnet'), others are vague or in French (acl_get, contact_get, auth_login descriptions are in French, creating LLM confusion). Parameter descriptions are present but often minimal (e.g., 'The device ID to retrieve' lacks format/constraint info). Output schemas are not documented anywhere in the source, critical gap for LLM planning. Error handling is absent from visible code. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Destructive tools (device_delete, auth_remove) lack confirmation patterns. Tool composition is reasonable (separate device_* tools), but no pagination support visible for list operations.
Récupère le fichier ACL du tailnet
Prévisualise l'effet d'un fichier ACL
Définit le fichier ACL du tailnet
Valide un fichier ACL
Affiche tous les contextes configurés
Authentification interactive — stocke le token dans le trousseau système
Supprime un contexte et son token du trousseau système
Affiche le statut d'authentification du contexte actif
Descriptions in French for 8+ tools (acl_get, acl_set, acl_preview, acl_validate, contact_get, contact_update, contact_resend_verification, auth_login, auth_status, auth_switch, auth_list, auth_remove) create language mismatch. LLMs trained on English will struggle to parse intent and select tools correctly.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., deviceId from device_list to pass to device_get). This forces agents to guess response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Change le contexte actif
Génère le script d'autocomplétion pour le shell spécifié
Affiche les contacts du tailnet
Renvoie l'email de vérification pour un contact
Met à jour un contact du tailnet
Authorize a device
Deauthorize a device
Delete a device
Expire the key of a device
Get details of a device
List all devices in the tailnet
Manage device posture attributes
Manage subnet routes for a device
Set the IP address of a device
Enable or disable key expiry for a device
Set the name of a device
Set the tags of a device
Destructive tools (device_delete, auth_remove) lack confirmation patterns. No dry-run, no confirm parameter enforcement, no error guidance. Agents can delete devices or auth contexts without safeguards.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels declared (READ_ONLY, WRITE, DESTRUCTIVE). LLMs cannot infer safety properties from names alone.
Parameter descriptions lack format/constraint details. E.g., 'deviceId' has no format hint (UUID? alphanumeric?), 'tags' array has no element format, 'fields' enum values not listed in description. LLMs must infer valid inputs.