Provides a send_discord_file tool to picobot agents, enabling Claw to send actual file attachments to Discord channels.
Single tool 'send_discord_file' has a clear verb-noun name and reasonable description (156 chars), but critical gaps undermine quality. Input schema is visible with two parameters (file_path, caption), both typed as strings with descriptions. However, the schema lacks critical constraints: no file size validation (claims max 10MB but not enforced in schema), no file type whitelist, no path traversal protection documented. The caption parameter is optional but lacks length validation despite claiming 2000 char max. Output schema is not documented, LLM cannot predict success/error structure. Error handling is mentioned generically ('returns success or an error message') but provides no guidance on error categories, recovery steps, or specific failure modes. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite WRITE risk classification. The tool modifies external state (sends Discord message) but lacks idempotency guarantees or confirmation pattern. Parameter descriptions are adequate but do not address security concerns (path traversal, file access validation). Overall: functional but production-unsafe.
Send a file as a Discord attachment to the current user's channel. Use this when a Discord user asks you to "send a CSV", "attach a file", "send a document", or similar. The file must already exist in the workspace directory. Supports any file type: CSV, JSON, TXT, PDF, images, etc. (max 10MB). Returns success or an error message.
No output schema documented. LLM cannot predict response structure (success object, error format, fields returned). Violates pattern:tool requirement for documented return types.
Input validation constraints not enforced in schema. Claims 'max 10MB' and 'max 2000 chars' in description but schema has no maxLength, pattern, or size constraints. LLM cannot validate before calling.
No path traversal protection documented. file_path parameter accepts 'relative to workspace' or 'absolute within workspace' but schema provides no regex pattern or validation rules. LLM could pass '../../../etc/passwd'.
Error handling lacks recovery guidance. Description says 'returns success or an error message' but does not categorize errors (retryable, user-fixable, fatal) or provide next steps. Violates pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No tool annotations despite WRITE risk. Tool modifies external state (sends Discord message) but lacks destructiveHint, idempotentHint, or confirmation pattern. Agents cannot reason about side effects.