Two tools with complete schemas and descriptions. pha_user_whoami is minimal but clear (READ_ONLY). pha_user_search has comprehensive parameter coverage (16 params, all typed and described) with pagination support (limit, after, fetch_all). Descriptions are adequate (50-200 chars range). However, output schemas are not documented in the source, LLMs cannot see what fields to expect from responses. No error handling guidance visible. Tool names follow verb_noun pattern but lack clarity on what 'pha_' prefix means. Missing per-parameter constraints (e.g., limit bounds, enum values for 'order' and 'query_key'). No mention of idempotency or retry safety.
Search for users with advanced filtering capabilities. A single call returns at most ~100 results and is NOT exhaustive. For 'all/every/identify-all' queries, pass fetch_all=True to get the complete set in one call.
Get the current user's information.
Output schemas not documented. LLMs cannot see what fields pha_user_whoami and pha_user_search return, forcing them to guess downstream field names and risk broken tool chains.
Parameter constraints missing. 'order' param accepts 'newest', 'oldest', 'relevance' but no enum declared. 'limit' has no bounds (description says default 100, max ~100, but no min/max schema). 'query_key' accepts 'active', 'admin', 'all', 'approval' but not formalized as enum.
No error handling guidance. If a search returns zero results, or if an invalid query_key is passed, the tool response does not guide the LLM on recovery steps (e.g., 'Try a broader search' or 'Valid query_keys are: active, admin, all, approval').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2025-06-18+ | v2 |
Tool name prefix 'pha_' is unexplained. LLMs cannot infer whether 'pha' means Phabricator, Phorge, or a custom namespace. Clearer names like 'phorge_user_whoami' or 'conduit_user_whoami' would improve discoverability.
Idempotency and retry safety not declared. pha_user_search is read-only (safe), but pha_user_whoami's risk is marked READ_ONLY yet no explicit idempotent hint in schema. Tool annotations (idempotentHint) should be present in tool definitions.