Hyper-realistic AI photoshoots from your terminal or any coding agent
Phottly CLI exposes 7 tools via STDIO with minimal schema documentation. Tool names lack action verbs (login, logout, credits, avatars are nouns or generic). Descriptions are present but brief (10-50 chars), below the 50-200 char LLM-optimized baseline. Only 2 of 7 tools (generate, status, save) have visible input schemas; the others (login, logout, credits, avatars) show no schema in source. Schemas that exist are incomplete: generate lacks enum constraints for 'mode' and 'resolution' despite documented valid values in code comments. No output schemas documented. Error handling is minimal, most tools exit(1) with generic messages rather than guiding recovery. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Composition is reasonable (each tool does one thing), but parameter naming is inconsistent (avatarAssetId vs avatar, generationMode vs mode).
List reference avatars
Check balance and plan
Start a photoshoot generation
Sign in via browser (OAuth)
Sign out and clear credentials
Persist frames to your gallery
Check or await a generation status
4 of 7 tools (login, logout, credits, avatars) have no visible input schemas in source code.
Tool names lack action verbs. 'login', 'logout', 'credits', 'avatars' are nouns or generic. Should be 'authenticate_oauth', 'clear_session', 'get_credits', 'list_avatars' to signal intent to LLMs.
Descriptions are too brief (10-50 chars, below 50-200 char baseline). E.g. 'Sign in via browser (OAuth)' lacks context on when to use, prerequisites, or what happens. LLMs cannot reliably select tools with such sparse descriptions.
generate tool has valid values for 'mode' and 'resolution' documented in code (MODES object, '1K|2K|4K') but not declared as enums in schema. LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g. generationId from generate response). Violates pattern:tool and mxe:include-chaining-ids.