A .NET-based AI agent framework with Blazor web UI, Telegram bot integration, workflow engine, and MCP support for autonomous task execution
DotnetClaw's 8 job-scheduling tools have clear verb-noun naming (schedule_job, list_jobs, delete_job) and reasonable descriptions (avg ~120 chars). All tools have input schemas with typed parameters. However, parameter descriptions are sparse, many lack detail on constraints, formats, or dependencies. Output schemas are not documented. Error handling guidance is absent. The tools follow a consistent pattern but lack the depth needed for A-grade quality.
Permanently delete a scheduled job by its ID.
Pause a job without deleting it. It can be re-enabled later.
Re-enable a previously disabled job.
Get full details and the last result for a specific job by its ID.
List all scheduled background jobs (enabled and disabled).
Execute a job immediately, regardless of its schedule.
Schedule a recurring background job using a CRON expression. The job will run the given prompt through the agent on the specified schedule. When the user describes a schedule in natural language (e.g. 'every morning at 8:00', 'every Monday at noon', 'twice a day') convert it to a standard 5-part CRON expression (minute hour dom month dow) before calling this function. Returns the new job ID.
Output schemas not documented. LLMs cannot plan downstream calls or extract job IDs, status, or results without knowing response structure.
Parameter descriptions lack constraint details. 'jobId' is described as '8-character job ID' but no validation guidance for LLM. 'cronExpression' lacks format examples or validation rules beyond the single example.
No error handling guidance. Tools do not document what happens on invalid CRON, missing job ID, or permission failures. LLM has no recovery path.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Schedule a one-shot background job that runs the prompt once at a specific UTC time. Returns the new job ID.
Destructive operations (delete_job) lack confirmation or dry-run support. Agents can permanently delete jobs without safeguards.
Tool descriptions are generic and lack context on when to use each tool. 'Get full details and the last result for a specific job' does not explain what 'last result' means or when to call this vs list_jobs.